在 C++ 中访问结构体引用的成员

问题描述 投票:0回答:1

我已将结构体的引用传递给我的函数,并且需要访问其中一个成员并通过引用将其传递给另一个函数,但它不起作用。我对 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
,它仍然会给我同样错误的阴影。

我唯一的猜测是,它正在读取指针,就好像它是一种颜色类型一样,并给出错误的阴影,尽管我不知道这是否正确,也不知道如何解决这个问题。

希望有人能帮忙。

c++ pointers struct reference
1个回答
0
投票

您不应该将指针传递给需要引用的函数。

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
© www.soinside.com 2019 - 2024. All rights reserved.