Visual Studio 版本 16.10.3、C++17、Win10-64。
我无法弄清楚这一点。我想我已经把所有流行语都弄对了,但我收到以下代码的错误:
#include <string>
using namespace std;
class AssetID {
private:
string& asset_Name;
public:
const string& getName() { return asset_Name; }
}; // class AssetID
static
bool compareName(const AssetID* lhs, const AssetID* rhs) {
return lhs->getName() < rhs->getName();
};
Run Code Online (Sandbox Code Playgroud)
Code Description Project File Line Suppression State
C2662 'const std::string &AssetID::getName(void)': cannot convert 'this' pointer from 'const AssetID' to 'AssetID &' HOAAnalysis DTest.h 15
C2662 'const std::string &AssetID::getName(void)': cannot convert 'this' pointer from 'const AssetID' to 'AssetID &' HOAAnalysis Test.h 15
Run Code Online (Sandbox Code Playgroud)
const AssetID* lhs
Run Code Online (Sandbox Code Playgroud)
这是一个指向const对象的指针。取消引用它会给你一个const对象。当你有一个const对象时,你只能调用它的const方法。
const string& getName() { return asset_Name; }
Run Code Online (Sandbox Code Playgroud)
这不是一种const方法。它是一种返回对const对象的引用的方法,这不是一回事。这应该是:
const string& getName() const { return asset_Name; }
Run Code Online (Sandbox Code Playgroud)
现在你有了一个const类方法。