我正在尝试在抽象类上重载下标运算符([]),由重载调用的函数在具体对象中实现。
class CollectionBase {
public:
double& operator[] (const int nIndex)
{
return getValue(nIndex);
}
virtual double getValue(int index) = 0;
};
class Collection : public CollectionBase
{
double getValue(int index) { return 0; }
};
我遇到的问题是我的编译器在重载中对getValue的调用上引发了错误。
引用非const的初始值必须为左值
有人知道我要做什么的语法吗?
最佳答案
问题是您要返回对从getValue
返回的临时值的引用。使两个函数都返回double&
,或者使两个函数都返回double
。
关于c++ - 从重载下标运算符调用虚拟函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11109811/