如何将对象引用传递给另一个类?编译冲突报错求助
问题分析与解决
编译错误原因
你写的MenuX(alpha4);在C++中会被编译器误解为声明一个名为alpha4的MenuX类型对象,但前面已经定义了Adafruit_AlphaNum4 alpha4,这就导致了同名变量的冲突,触发conflicting declaration错误。
另外,MenuX的构造函数要求传入Adafruit_AlphaNum4*(指针类型),但你直接传了对象alpha4,类型不匹配——即便没有重名问题,这也会引发编译错误。
修正代码
修改main.cpp中的对象创建逻辑:
#include "MenuX.h" Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); // 正确创建MenuX对象:传入alpha4的地址,同时给对象起不冲突的名称 MenuX myMenu(&alpha4);
后续如果需要调用addX方法,直接执行myMenu.addX();即可。
补充说明
- 构造函数接受指针参数时,必须传入对象的地址(用
&取地址),不能直接传递对象本身。 - 声明类对象时必须指定变量名(比如示例中的
myMenu),不能仅写类名加括号,否则会被编译器误解析为函数声明或重复变量声明。
内容的提问来源于stack exchange,提问作者user2570937
相关产品推荐
相关产品推荐

