我已经定义了一个结构
struct Pixel { uint8_t r, g, b; };
我有一个功能
void setPixel(int x, int y, const Pixel& color);
我必须为setPixel()
函数输入什么颜色值才能使其正常工作?我不知道应该如何定义它。
我在这里缺少什么?
答案 0 :(得分:1)
查看为您要调用的函数提供的原型。
void setPixel(int x, int y, const Pixel& color);
观察:
x
的一个参数,一个int y
的一个参数,一个int color
的一个参数,Pixel
,首先,任何超过三个参数的调用都无效。
其次,您需要提供正确类型的三个参数,前两个类型为int,可以是r值。您的x
和y
可能没问题,如果它们是int,就像在
int x = 5;
int y = 5;
然而,这可能有点令人困惑,在您要调用的函数内外使用相同的名称。所以我建议
int outsideX = 5;
int outsideY = 5;
作为参考参数的第三个参数需要类型为Pixel
的实际(常量)变量。你需要设置一个。
Pixel outsideColor;
outsideColor.r = 255;
outsideColor.g = 0;
outsideColor.b = 255;
// this will be bright magenta
完成这些准备后,您可以将该功能称为
setPixel(outsideX, outsideY, outsideColor);
答案 1 :(得分:0)
您只需正确构建Pixel,例如,您可以使用聚合初始化或手动构建:
struct Pixel { uint8_t r, g, b; };
void setPixel(int x, int y, const Pixel& color) {
std::cout << "Setting " << x << " " << y << " to: " << (unsigned)color.r << " " << (unsigned)color.g << " " << (unsigned)color.b << std::endl;
}
int main() {
// Using aggregate init
setPixel(1, 1, { 255, 255, 255 });
// Manually
Pixel pix;
pix.r = 255;
pix.g = 255;
pix.b = 255;
setPixel(1, 1, pix);
}
答案 2 :(得分:0)
显然,没有任何功能可以将颜色视为三个不同的参数。
相反,你必须使用以结构为参数的函数。这很容易,如
setPixel(some_x, some_y, { some_r, some_g, some_b });
变量定义并初始化为某些值或直接值。