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

时间:2012-06-19 21:35:22

标签: c++

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

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的引用的初始值必须是左值

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

1 个答案:

答案 0 :(得分:4)

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