私がこれをすると:
std::vector<int> hello;
すべてうまく動作します。ただし、代わりに参照のベクトルにすると、次のようになります。
std::vector<int &> hello;
次のようなひどいエラーが発生します
エラー C2528: 'ポインタ': 参照へのポインタが不正です
ポインターをいじらなくても済むように、構造体への参照をベクターにまとめたいのですが、なぜベクターはこれについて大騒ぎしているのでしょうか? 代わりにポインターのベクターを使用するしか選択肢はないのでしょうか?
ベストアンサー1
ベクターのようなコンテナのコンポーネント型は割り当て可能参照は割り当て可能ではありません (宣言時に一度だけ初期化でき、後で他のものを参照することはできません)。その他の割り当て不可能な型もコンテナのコンポーネントとして使用できません。たとえば、vector<const int>
は許可されません。