我在学习Cem5模拟器的同时,还很少使用C ++,并且正在遵循this教程说明。在构建对象期间,对于goodbye.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();
}
再见对象在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。这也给错误。
您能否给我一些有关为什么会发生此错误或我在哪里出错的见解?
答案 0 :(得分:1)
我不熟悉gem5,但是从纯C ++的角度来看,您的代码有多个问题。
const
,但您的成员函数不是。从变量声明(const
中删除GoodbyeObject* goodbye
或在函数声明(const
)中添加void GoodbyeObject::sayGoodbye(std::string other_name) const
。->
而不是.
访问其成员。class GoodbyeObject;
,请注意分号),然后尝试使用它而不先完全定义它,则会发生这种情况。您是否已包含定义GoodbyeObject
的标题?