gem5模拟:当goodbye.sayGoodbye(myName)调用

时间:2019-09-09 11:45:31

标签: c++ gem5

我在学习Cem5模拟器的同时,还很少使用C ++,并且正在遵循this教程说明。在构建对象期间,对于goodbye.sayGoodbye(myName);语句,终端显示以下错误: enter image description here

sayGoodbye()类中GoodbyeObject函数的定义:

void
GoodbyeObject::sayGoodbye(std::string other_name)
{
    DPRINTF(Hello, "Saying goodbye to %s\n", other_name);
    message= " Goodbye" + other_name + "!! ";
    fillBuffer();
}

再见对象在const GoodbyeObject * goodbye;中声明为const std::string myName;,而myName在class HelloObject中声明为goodbye->sayGoodbye(myName);

我尝试使用goodbye.sayGoodbye(myName);代替SELECT * FROM ( (SELECT 6 + 2 AS val1, NULL AS val2, NULL AS val3, NULL AS val4, 5 + 5 AS val5, NULL AS val6 FROM DUAL) UNION (SELECT NULL AS val1, 6 - 2 AS val2, NULL AS val3, NULL AS val4, 9 - 3 AS val5, 7 - 3 AS val6 FROM DUAL) UNION (SELECT NULL AS val1, NULL AS val2, 6 * 2 AS val3, NULL AS val4, NULL AS val5, NULL AS val6 FROM DUAL) UNION (SELECT NULL AS val1, NULL AS val2, NULL AS val3, 6 / 2 AS val4, NULL AS val5, NULL AS val6 FROM DUAL) ) A; ,并且没有将再见对象声明为const。这也给错误。 enter image description here您能否给我一些有关为什么会发生此错误或我在哪里出错的见解?

1 个答案:

答案 0 :(得分:1)

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

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