C++ 结构像素颜色值

C++ 结构像素颜色值,c++,rgb,pixel,C++,Rgb,Pixel,我定义了一个结构 struct Pixel { uint8_t r, g, b; }; 我有一个函数 void setPixel(int x, int y, const Pixel& color); 对于setPixel()函数,我必须输入什么color值才能使其工作?我不知道该如何定义它 我在这里遗漏了什么?看看为您想要调用的函数提供的原型 void setPixel(int x, int y, const Pixel& color); 意见: 它需要一个用于x的参数,

我定义了一个结构

struct Pixel { uint8_t r, g, b; };
我有一个函数

void setPixel(int x, int y, const Pixel& color);
对于
setPixel()
函数,我必须输入什么color值才能使其工作?我不知道该如何定义它


我在这里遗漏了什么?

看看为您想要调用的函数提供的原型

void setPixel(int x, int y, const Pixel& color);
意见:

  • 它需要一个用于
    x
    的参数,即int
  • 它需要一个用于
    y
    的参数,一个int
  • 它需要一个用于
    颜色的参数,一个
    像素

    它碰巧是一个引用参数,但这不是直接相关的
因此,首先,任何具有三个以上参数的调用都无法工作

其次,需要给出三个正确类型的参数,前两个是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);

您只需正确构造像素,例如,您可以使用聚合初始化或手动构造:

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);
}
struct Pixel{uint8_tr,g,b;};
无效设置像素(整数x、整数y、常量像素和颜色){

显然,没有函数将颜色作为三个不同的参数

相反,您必须使用以结构为参数的函数

setPixel(some_x, some_y, { some_r, some_g, some_b });

变量被定义并初始化为某些值,或直接值。

可能重复尝试更改pixel结构中的数据类型。uint8\u t是可选的实现,因此编译器可能不支持它,但这只是一个猜测。“我必须为
setPixel()输入什么颜色值?”
使其工作的功能?“你想要什么颜色?你想问什么,如何使用第一个以像素结构为参数的函数,或者关于你得到的链接器错误?请每个问题只回答一个问题。@Kits uint8受支持。我得到的错误是因为这两个函数定义在第一个setPix下面el()可能有错误的值,或者那里有其他错误。首先设置像素()不使用,因为我不知道应该输入什么值,因为它是像素类型。@Someprogrammerdude因为我得到的链接器错误基本上与第一个问题有关,因为它是一个替代问题,我认为可以将这两个问题放在一个问题中。但是如果你真的认为我应该将它们分开,我会的。@Someprogrammerdude,Thanks,改为更干净的cpp样式,尽管GCC(4.6.3和6.3)支持它。这解释了第三个参数的问题,但错误仍然存在。我假设是其他原因,但我甚至不知道可能出了什么问题,或者在哪里查找。