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

Calling a virtual function from overloaded subscript operator

本文关键字:调用 函数 运算符 下标 重载      更新时间:2023-10-16

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

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