Ase*_*hev 1 c++ arrays default
我有以下功能:
void getDefaultMaterial(Uint8 rgb[3]);
Run Code Online (Sandbox Code Playgroud)
问题是我希望rgb参数具有默认值.像那样:
void getDefaultMaterial(Uint8 rgb[3]={255, 255, 255});
Run Code Online (Sandbox Code Playgroud)
不幸的是,编译器不喜欢这个?还有另外一种方法吗?
请注意,参数是指针,而不是数组.
对于编译器,原型相当于
void getDefaultMaterial(Uint8* rgb);
Run Code Online (Sandbox Code Playgroud)
重载是一种替代方法:
void getDefaultMaterial(Uint8 rgb[3]);
void getDefaultMaterial()
{
Uint8 rgb[3] = { 255, 255, 255 };
getDefaultMaterial(rgb);
}
Run Code Online (Sandbox Code Playgroud)
虽然,如果rgb是一个"out"参数,这点就是我的意思.
如果它不是"out"参数,您可以使用具有默认值的实际数组,但是您需要通过const引用传递它:
void getDefaultMaterial(const Uint8 (&rgb)[3] = {255, 255, 255});
Run Code Online (Sandbox Code Playgroud)
或者,作为"out"参数,"默认为重载":
void getDefaultMaterial(Uint8 (&rgb)[3]);
void getDefaultMaterial()
{
Uint8 rgb[3] = { 255, 255, 255 };
getDefaultMaterial(rgb);
}
Run Code Online (Sandbox Code Playgroud)