3

何らかの理由でこれは機能しません。ファイルをコンパイルしますが、ゲッターを使用する場合、このベクターにアイテムは追加されません。

例えば

class class_name {

    public:
        inline std::vector<int> get_numbers() { return m_numbers; }    

    private:
        std::vector<int> m_numbers;
}

....

{
    class_name number_list;
    number_list.get_numbers().push_back(1);
}

直接(m_numbers.push_back(1))実行すると機能しますが、ゲッターで引き出すと何も追加されません。

4

1 に答える 1

9

ベクトルを変更する場合は、参照してベクトルを返します。

inline std::vector<int> &get_numbers() { return m_numbers; }  
                        ^

アンパサンドがないと、コピーが返されます。

于 2012-10-12T02:48:59.833 に答える