C++ 从重载的下标运算符调用虚函数

C++ 从重载的下标运算符调用虚函数,c++,C++,我试图在抽象类上重载下标运算符([]),重载调用的函数在具体对象中实现 class CollectionBase { public: double& operator[] (const int nIndex) { return getValue(nIndex); } virtual double getValue(int index) = 0; }; class Collection : public CollectionBase

我试图在抽象类上重载下标运算符([]),重载调用的函数在具体对象中实现

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时抛出了一个错误

非常量引用的初始值必须是左值


有人知道我要做的事情的语法吗?

问题是,您正在返回对从
getValue
返回的临时值的引用。要么让两个函数都返回
double&
,要么都返回
double

问题在于,您返回的是对从
getValue
返回的临时值的引用。使两个函数都返回
double&
,或者都返回
double

是否打算从
操作符[]
返回对
double
的引用?是否打算从
操作符[]
返回对
double
的引用?
返回0将是重载的
getValue
中的一个问题。谢谢你的回答,我认为重载必须是reference@Charles贝利:我假设
返回0
来自最小化要发布的代码。
返回0将是重载的
getValue
中的一个问题。谢谢你的回答,我认为重载必须是reference@Charles贝利:我假设
返回0
来自最小化要发布的代码。