c++ - 无法比较来自函数返回引用的字符串引用
问题描述
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();
};
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
解决方案
const AssetID* lhs
这是一个指向const
对象的指针。取消引用它会给你一个const
对象。当你有一个const
对象时,你只能调用它的const
方法。
const string& getName() { return asset_Name; }
这不是一种const
方法。它是一种返回对const
对象的引用的方法,这不是一回事。这应该是:
const string& getName() const { return asset_Name; }
现在你有了一个const
类方法。
推荐阅读
- python - 用于 AWS 的 Python 脚本,用于收集有关当前区域中所有实例的信息。它应该按 AMI 以及使用它们的实例数量对它们进行分组
- python-3.x - nlp中是否有任何来源来总结所需的文本
- python - 将音频流切割成话语
- react-native - Formik / Yup 不工作(无法解析模块)
- html - 如何使用 R selenium 选择和勾选网站的复选框
- react-native - 在 IOS 上打开下载的 docx 文件语言环境
- r - 在 R 中构建多个箱线图
- c++ - C++ 检查包是否已通过 Swift 包管理器安装并包含一个文件
- bitbucket - Bitbucket-SCM-Collector 未获取任何数据
- android-studio - 资源编译失败