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

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/

10-11 22:47
查看更多