0

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

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 时抛出错误。

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

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

4

1 回答 1

4

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

于 2012-06-19T21:37:46.833 回答