Car*_*ven 4 c++ arrays function
可能重复:
数组参数的默认值
如何将数组作为函数的默认参数?我试过这个:
void drawCircle(float radius, GLfloat colour[3]={2.0, 3.0, 4.0}, bool do=true) {
...
}
Run Code Online (Sandbox Code Playgroud)
该部分GLfloat colour[3]={2.0, 3.0, 4.0}
给了我一个错误.这在C++中是否可行?
在C++中,您不能通过值将完整的内存块作为参数传递给函数,但是您可以传递其地址.
所以不,你不能在C++ 03中至少做到这一点.
你可以这样做:
GLfloat defaultColor[3] = {2.0, 3.0, 4.0};
void drawCircle(float radius, GLfloat colour[3]= defaultColor, bool do=true)
{
}
Run Code Online (Sandbox Code Playgroud)
您无法按值传递数组,因此您无法执行此操作.
所以解决方法是,将函数重载为:
void drawCircle(float radius, GLfloat *colour, bool pleaseDo)
{
//...
}
void drawCircle(float radius, GLfloat *colour)
{
drawCircle(radius, colour, true);
}
void drawCircle(float radius)
{
GLfloat colour[3]={2.0, 3.0, 4.0};
drawCircle(radius, colour, true);
}
drawCircle(a,b,c); //calls first function
drawCircle(a,b); //calls second function
drawCircle(a); //calls third function
Run Code Online (Sandbox Code Playgroud)
第二和第三个函数最终调用第一个函数!
另请注意,这do
是一个关键字,因此您不能将其用作变量名.我用它代替了pleaseDo
:D