我正在尝试重载索引运算符 []
.我有两个版本
我需要同时使用它们,但是当我构建项目时,其中一个被调用,无论我在哪里使用第二个,我都会收到错误消息: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/