【发布时间】:2017-07-11 08:50:04
【问题描述】:
我正在使用 Qt/C++。
所以我有一个向量:
QVector<Room> rooms; //does everything like normal vector from what I've seen(I hope)
我的房间类看起来像这样:
class Room{
Textbox *t;
//other stuff
}
添加房间时,vector 会复制通过引用传递的房间并将副本推入:
void Floor::AddRoom(Room &_room, QWidget *_window)
{
rooms.push_back(_room);
}
我的问题是属于_room 的文本框指针会发生什么,因为它在复制之前指向某个东西,如果它被制作了?我的新推送房间是否会使其 *t 指向与通过引用传递的 _room 相同的地址/对象,还是会变为 nullptr?
我阅读了文档,但找不到任何关于将对象的副本推送到向量时指针会发生什么的信息。 提前致谢。
【问题讨论】:
-
恭喜,您刚刚遇到一个基本问题是软件设计:数据的所有权。谷歌“C++ 智能指针”。
-
这是微不足道 用调试器回答,或者就此而言,将入站
_room参数的指针和向量对象指针的背面都打印到标准输出.
标签: c++ qt pointers vector copy