我试图在抽象类上重载下标运算符([]),重载调用的函数在具体对象中实现。
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的引用的初始值必须是左值
有人知道我想要做的语法吗?
答案 0 :(得分:4)
问题是您要返回对getValue
返回的临时值的引用。要么使两个函数都返回double&
,要么都返回double
。