我有一个具有此功能的“Fan”类:
string getName();
我想在课外的另一个函数中使用它:
string print(const Fan& fan) {
std::stringstream ss;
ss << "Fan : " << fan.getName() ;
return ss.str();
}
我收到此错误:
.. \ mtm_ex4.cpp:37:52:错误:将
'const mtm::Fan'
作为'std::string mtm::Fan::getName()'
的'this'参数传递,丢弃限定符[-fpermissive]
为什么?!
更新
当我改为:
string getName() const;
我收到此错误:
对
的未定义引用mtm::Fan::getName() const
答案 0 :(得分:7)
您正在尝试在const对象上调用非const成员函数。只需更改功能:
string getName() const;
我会说这不是一个非常具有描述性的错误信息。
编辑:您需要在两个位置添加const
,在类中添加声明,在源中添加定义。
答案 1 :(得分:2)
您的参数fan
是const Fan&
,因此您只能以不修改它的方式使用它。您需要告诉编译器调用getName
不会修改对象 - 它不会自动知道这一点。为此,您只需在const
:
getName
string getName() const { ... };