c++ - gem5 模拟:goodbye.sayGoodbye(myName) 调用时出错
问题描述
我正在学习 gem5 模拟器,我对 C++ 的了解很少,并且我正在按照本教程说明进行操作。在构建对象期间,forgoodbye.sayGoodbye(myName);
语句,终端显示此错误:
sayGoodbye()
类内函数定义GoodbyeObject
:
void
GoodbyeObject::sayGoodbye(std::string other_name)
{
DPRINTF(Hello, "Saying goodbye to %s\n", other_name);
message= " Goodbye" + other_name + "!! ";
fillBuffer();
}
goodbye 对象被声明为const GoodbyeObject * goodbye;
,myName 被声明const std::string myName;
为class HelloObject
。
我已经尝试过goodbye->sayGoodbye(myName);
而不是将goodbye.sayGoodbye(myName);
再见对象声明为 const。这也给出了错误。
您能否给我一些关于为什么会发生此错误或我在哪里犯错误的见解?
解决方案
我对 gem5 不熟悉,但从纯 C++ 的角度来看,您的代码有多个问题。
- 您的对象是
const
,但您的成员函数不是。const
从变量声明中删除 ( )或在函数声明中GoodbyeObject* goodbye
添加 a ( )。const
void GoodbyeObject::sayGoodbye(std::string other_name) const
->
由于您的变量是一个指针,因此可以使用not with访问其成员.
。- 您不完整的类型错误表明您在使用变量之前没有包含类定义。如果您转发声明一个类(例如
class GoodbyeObject;
,请注意末尾的分号)然后尝试使用它而不首先完全定义它,则会发生这种情况。您是否包含了您定义的标题GoodbyeObject
?
推荐阅读
- c++ - 在输入字母之前,我们如何才能进行数字输入?
- google-api - 如何发送英文文本并获得德语音频文件返回?
- android - 如何修复异常:未处理的异常:在收到完整标头之前连接已关闭
- javascript - 如何检测或强制打开 iPhone 上的键盘?
- javascript - 从值数组中查找最大值的函数,不使用“Math.max()”
- java - 将 Int 值转换为文本字段
- python - python数据框中的融化/枢轴
- angular - 基于 geofireX 位置的内部连接集合
- c# - 不能两次射火球
- firebase - Flutter 聊天应用中的 NoSuchMethodError: 'dart.global.firebase.auth'