首页 > 解决方案 > 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。这也给出了错误。 在此处输入图像描述您能否给我一些关于为什么会发生此错误或我在哪里犯错误的见解?

标签: c++gem5

解决方案


我对 gem5 不熟悉,但从纯 C++ 的角度来看,您的代码有多个问题。

  1. 您的对象是const,但您的成员函数不是。const从变量声明中删除 ( )或在函数声明中GoodbyeObject* goodbye添加 a ( )。constvoid GoodbyeObject::sayGoodbye(std::string other_name) const
  2. ->由于您的变量是一个指针,因此可以使用not with访问其成员.
  3. 不完整的类型错误表明您在使用变量之前没有包含类定义。如果您转发声明一个类(例如class GoodbyeObject;,请注意末尾的分号)然后尝试使用它而不首先完全定义它,则会发生这种情况。您是否包含了您定义的标题GoodbyeObject

推荐阅读