我不知道为什么这不编译:
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)