const丢弃限定符c ++

use*_*061 2 c++ const

我有一个具有此功能的"Fan"类:

string getName();
Run Code Online (Sandbox Code Playgroud)

我想在课外的另一个函数中使用它:

string print(const Fan& fan) {
    std::stringstream ss;

    ss << "Fan : "  << fan.getName() ;

     return ss.str();
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

..\mtm_ex4.cpp:37:52:错误:传递丢弃限定符的'const mtm::Fan''this'参数'std::string mtm::Fan::getName()'[-fpermissive]

这是为什么?!


更新:

当我将其更改为:

string getName() const;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

未定义的引用 mtm::Fan::getName() const

Mar*_*som 7

您正试图在const对象上调用非const成员函数.只需更改功能:

string getName() const;
Run Code Online (Sandbox Code Playgroud)

我会说这不是一个非常具有描述性的错误信息.

编辑:您需要const两个位置添加,类中的声明和源中的定义.