c++ - 重载索引运算符

标签 c++ indexing operator-overloading

我正在尝试重载索引运算符 [] .我有两个版本 我需要同时使用它们,但是当我构建项目时,其中一个被调用,无论我在哪里使用第二个,我都会收到错误消息:Invalid operands to binary expression double and Quarters .

这是第一个:

Quarters& Security :: operator [] (QuarterType quarter){
    return quartersData[static_cast<int>(quarter)];
}

第二个:

const double& Security :: operator [] (QuarterType quarter) const{
    return (quartersData[static_cast<int>(quarter)].getPrediction());
}

问题是什么,我该如何解决?

最佳答案

覆盖不考虑返回类型。由于在这两种情况下参数类型相同,覆盖仅考虑对象的 const 特性。如果您的对象不是 const,则将调用 operator[] 的非 const 版本,无论您接下来要用它做什么。

关于c++ - 重载索引运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31138780/

相关文章:

operator-overloading - C++0x T operator+(const T&, T&&) 模式,还需要移动吗?

c++ - 当析构函数调用自动变量修改函数返回值时,MSVC14.1和gcc8.3之间观察到差异

php - Cakephp,可搜索行为帮助,返回空结果

sql-server - 如何在与参数一起使用时优化 "OR"子句的使用 (SQL Server 2008)

vector - 实现二维向量语法以访问一维向量?

c# - 如何将运算符函数添加到原始数据类型 C#

c++ - 给定一个随机数列表 [0, 1] : can I use the standard library to convert to a specific distribution?

c++ - 打开 .doc 文件而不提供其处理程序应用程序 C++ 的路径

c++ - 用于 SVM OpenCV 训练的交通标志图像集

sql - Postgres 在与 Order By 一起使用时执行序列扫描