0

だから...あなたは参照の配列を行うことはできませんが、参照、ポインター、および値を処理するコレクションを構築できますか?

Collection<Integer32*> a;
Collection<Integer32&> b;
Collection<Integer32> c;

これが私が遭遇している問題です:

template <class ItemType> class Collection
{
    public:
        Collection(ItemType array[]);  // or ItemType*, doesnt matter

    protected:
        ItemType* innerArray;
};

コンパイラは、参照へのポインタはありませんと言っています...可能ですか?

4

2 に答える 2

3

いいえ-Collection<Integer32&> b;無効です。参照のコレクションを作成することはできません。

残りは合法ですが、クラスをコンパイルする必要があります。

于 2013-01-18T23:05:26.730 に答える
1

プレーン配列のような標準のコンテナーは、値の型としての参照をサポートしていませんが、独自のコレクション型を作成すると、これを行うことができます。

内部的には、コレクションは参照をコピーして割り当てることができるものとして保存する必要があります。そのような表現については、プレーンなポインターを使用するか、 std::reference_wrapper を参照できます。

おそらく、参照ケースには部分的な特殊化を使用する必要があります。

于 2013-01-18T23:52:20.463 に答える