【发布时间】:2015-06-30 12:48:31
【问题描述】:
我正在尝试重载索引运算符[]。我有两个版本
我需要同时使用它们,但是当我构建项目时,其中一个被调用,并且无论我在哪里使用第二个都会出现错误: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());
}
有什么问题,我可以做些什么来解决它?
【问题讨论】:
-
“无论我在哪里使用第二个,都会出错”...那个错误会是什么?当您尝试调用第二个时,代码行是什么?
-
@CoryKramer 错误是:二进制表达式 double 和 Quarters 的操作数无效,行的示例是“double x=security[quarterType]”
-
@Raw305 是
securityconst?如果是security[quarterType]将返回const double&,但如果它不是它将返回Quarters&,这是一种奇怪的重载方式。也许您应该改用转换运算符重载? -
您能否编辑您的帖子以包含该行以及更多的上下文行(即定义
security和quarterType的位置)
标签: c++ indexing operator-overloading