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 の呼び出しでエラーをスローしていることです。

非 const への参照の初期値は左辺値でなければなりません

私がやろうとしていることの構文を知っている人はいますか?

4

1 に答える 1

4

問題は、 から返された一時的な値への参照を返していることですgetValue。両方の関数を returndouble&にするか、両方を return にしdoubleます。

于 2012-06-19T21:37:46.833 に答える