我已将结构体的引用传递给我的函数,并且需要访问其中一个成员并通过引用将其传递给另一个函数,但它不起作用。我对 C++ 很陌生,所以还不太熟悉指针的来龙去脉。我的代码的重要部分:
// uses VEXcode API https://api.vexcode.cloud/v5/
// also excuse the odd color vs colour naming: I am British but the API is American. For clarity,
// "color" is a type but "colour" is a name
typedef struct {
// other members
color colour,
} autonButton;
const autonButton auton1{
// other members
.colour = color::blue,
};
void drawButtonSlot(autonButton& button) {
// other code
Brain.Screen.setFillColor(&button.colour); // MY PROBLEM
// other code
};
drawButtonSlot(&auton1);
函数
setFillColor
采用 &color
类型,但是当我传递像上面这样的成员时,它会呈现奇怪的阴影,而不是蓝色。
我尝试将
&button.colour
更改为 button.colour
但这会导致不渲染任何颜色。
如果我将
color::blue
更改为 color::green
,它仍然会给我同样错误的阴影。
我唯一的猜测是,它正在读取指针,就好像它是一种颜色类型一样,并给出错误的阴影,尽管我不知道这是否正确,也不知道如何解决这个问题。
希望有人能帮忙。
您不应该将指针传递给需要引用的函数。
typedef struct {
// other members
color colour,
} autonButton;
const autonButton auton1{
// other members
.colour = color::blue,
};
void drawButtonSlot(autonButton& button) {
// other code
Brain.Screen.setFillColor(button.colour); // Since you said setFillColor takes a reference, don't pass its address
// other code
};
drawButtonSlot(auton1); // Since drawButtonSlot takes a reference, don't pass its address