オブジェクトへの参照を含むstd::vectorへの参照を取得できないのはなぜですか?次のコードは、Visual C++2010でコンパイルエラーを生成します。
void Map::Filter( Object::Type type, std::vector<Object&>& list )
{
for ( register int y = 0; y < MAP_H; y++ )
for ( register int x = 0; x < MAP_W; x++ ) {
if ( under[y][x].GetType() == type )
list.push_back(under[y][x]);
if ( above[y][x].GetType() == type )
list.push_back(above[y][x]);
}
}
要約されたコンパイルエラー:
c:\program files\microsoft visual studio 10.0\vc\include\xmemory(137): error C2528: 'pointer' : pointer to reference is illegal
c:\program files\microsoft visual studio 10.0\vc\include\vector(421) : see reference to class template instantiation 'std::allocator<_Ty>' being compiled
「オブジェクトへの参照のベクトル」から「オブジェクトへのポインタのベクトル」に切り替えることで、問題を解決しました。参照のベクトルへの参照を持てない理由が理解できません。