【发布时间】:2016-02-18 08:39:55
【问题描述】:
在下面的代码 sn-p 中,我通过 new 运算符创建一个对象并将其分配给一个指针。我想做的是将它指向的对象添加到向量。似乎正在发生的事情是我很好地创建了对象,然后当我取消引用它时,这会创建对原始对象的引用。因此,当我将此 Object 的引用分配给向量时,它会创建一个副本,而我想要实际的对象。任何帮助将不胜感激。
std::vector<Object> OBJVec;
Object *O = new Object();
/*Edits some of the internals*/
addToVec(*O); //Here is the beginning of the problem: this passes a reference to the content of O.
void addToVec(Object OParam){ //Here Creates a copy of O instead of passing the actual content.
OBJVec.push_back(OParam); // Pushes a copy of content instead of content.
}
*注意:上面的代码是我试图完成的代码的一个非常简化的版本。
关于此接口的代码的注释,此代码与 OpenGL 交互,因此 OBJVec 必须包含对象。
我已经解决这个问题很长时间了,任何帮助都会很棒。
【问题讨论】:
-
我不确定我是否遵循。你是说你想要一个参考向量吗?在不复制的情况下获取现有对象并将其移动到向量中是没有意义的——要么移动,要么不移动。
-
不要为此使用指针。看看
emplace_back -
我想这个问题无法回答,除非您解释为什么在将对象推入向量之前将它们分配到向量之外。
标签: c++ pointers dereference