gpt4 book ai didi

class - 函数参数中的类(Arduino)无法编译

转载 作者:行者123 更新时间:2023-12-02 10:44:39 25 4
gpt4 key购买 nike

我正在尝试在C++中创建一个简单的类,但是我不断收到编译错误:

main:2: error: variable or field 'doSomething' declared void
main:2: error: 'person' was not declared in this scope

主要:
class person {
public:
int a;
};

void doSomething(person joe) {
return;
}

main()和其他东西会放在这里,但是即使我包含main(){},错误仍然会发生。我还尝试在joe之后添加2个封闭的括号,但这会产生错误:
main: In function 'void doSomething(person (*)())':
main:8: error: request for member 'a' in 'joe', which is of non-class type 'person (*)()'

任何帮助是极大的赞赏。 (我希望这不是我真正缺少的东西,因为我已经研究了几个小时)。

编辑:我发现这是一个特定于Arduino的错误。 This post回答。

最佳答案

在阅读this post之后我发现解决此问题的方法是:

typedef struct person{
public:
int a;
};

void doSomething(void *ptr)
{
person *x;
joe = (person *)ptr;
joe->a = 3; //To set a to 3
//Everything else is normal, except changing any value of person uses "->" rather than "."

return;
}

main()
{
person larry;
doSomething(&larry);
}

所以本质上是:

-将 class更改为 typedef struct
-在参数中,将新类型替换为 void *something
-将 person *x;x = (person *)ptr;添加到函数的开头

-每当访问type属性时,请使用 ->而不是 .

关于class - 函数参数中的类(Arduino)无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com