用作函数参数时,将默认值设置为C数组

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)

不幸的是,编译器不喜欢这个?还有另外一种方法吗?

mol*_*ilo 7

请注意,参数是指针,而不是数组.
对于编译器,原型相当于

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)