如何将对象添加到向量<const Obj&>?

kar*_*enc 4 c++

我不知道为什么这不编译:

std::vector< const Obj& > myVector;

void foo(const Obj& obj) 
{
    myVector.push_back( obj );  
}  
Run Code Online (Sandbox Code Playgroud)

对不起,关于我想要实现的内容的一些额外信息:我不能在不破坏接口的情况下更改foo的签名,但我只想挂在通过foo传递的对象上.我确实想存储它们的指针,但我对如何做到这一点的语法感到困惑.

小智 15

你不能有引用的向量.因为向量中的东西必须是可复制和可分配的,并且引用都不是这些.你可能想要一个指针向量:

std::vector< const Obj * > myVector;

void foo( const Obj & obj )
{
   myVector.push_back( & obj );
}
Run Code Online (Sandbox Code Playgroud)