Push_back元素在添加后会消失
Push_back elements dissapear after being added
我有一个消息类,它有一个名为child_list的消息指针向量。child_list应该包含对该主题的每个回复或对回复等的回复的地址。我将一系列消息导入到.txt文件中每个消息地址的全包消息指针向量中。然后,我回到文件中,查看每条信息的"儿童"回复。我的问题发生在我将回复的地址推回到该消息之后。我可以看到child_list.size()随着添加元素而增长,但在for循环完成后,我尝试打印出消息,我看到child_string.size()现在为0。为什么消息指针在我使用之前就被销毁了?
//bboard.cpp
void Bboard::display() const
{
cout << endl;
message_list[0]->print();
cout << endl;
}
//add each child to the message
for(unsigned m = 0; m < children.size(); ++m)
{
cout << "id to add: " << children[m] << endl;
Message * tempPTR = message_list[ children[m]-1 ];
cout << "tempPTR: " << tempPTR << endl;
cout << endl;
cout << "tdisplay BEFORE push to message_list[id]->add_child(tempPTR): " << endl;
display();
message_list[id]->add_child(tempPTR);
cout << endl;
display();
cout << "tdisplay AFTER push to message_list[id]->add_child(tempPTR): " << endl;
}
cout << endl;
cout << "After the for loop to add them: " << endl;
display();
//message.cpp
void Message::add_child(Message* child)
{
this->child_list.push_back(child);
cout << "tchild_list size: " << child_list.size() << endl;
}
//topic.cpp
//Message::print() is true virtual and is defined here for Topic
void Topic::print() const
{
cout << "Message #" << this->id << ": " << this->subject << endl;
cout << "from " << this->author << ": " << this->body << endl;
cout << "child_list Size: " << this->child_list.size() << endl;
//later, I need to add a for loop to display all the child messages
}
Oput到终端,显示删除前的消息地址和child_list指针。
来自终端:
消息id:1位于地址:0x8d45870
消息id:2位于地址:0x8d45a30
消息id:3位于地址:0x8d45b60
消息id:4位于地址:0x8d45da0
消息id:5位于地址:0x8d45ae0
消息id:6位于地址:0x8d45fe0
消息id:7位于地址:0x8d46170
消息id:8位于地址:0x8d46260
消息id:9位于地址:0x8d46310
消息id:10位于地址:0x8d45f90
id:1
儿童:6 9
儿童[m]:6
tempPTR:0x8d45fe0
显示BEFORE推送至message_list[id]->add_child(tempPTR):
消息#1:C12分配7
来自梅西:任务很难,所以要循序渐进。
您可以阅读Tips&技巧部分是为了得到一些帮助。
child_list大小:0
child->id:6
添加到列表的子项:0x8d45fe0
child_list大小:1
消息#1:C12分配7
来自梅西:任务很难,所以要循序渐进。
您可以阅读Tips&技巧部分是为了得到一些帮助。
child_list大小:0
显示AFTER推送至message_list[id]->add_child(tempPTR):
儿童[m]:9
tempPTR:0x8d46310
显示BEFORE推送至message_list[id]->add_child(tempPTR):
消息#1:C12分配7
来自梅西:任务很难,所以要循序渐进。
您可以阅读Tips&技巧部分是为了得到一些帮助。
child_list大小:0
child->id:9
添加到列表的子项:0x8d46310
child_list大小:2
消息#1:C12分配7
来自梅西:任务很难,所以要循序渐进。
您可以阅读Tips&技巧部分是为了得到一些帮助。
child_list大小:0
显示AFTER推送至message_list[id]->add_child(tempPTR):
在for循环之后添加它们:
消息#1:C12分配7
来自梅西:任务很难,所以要循序渐进。
您可以阅读Tips&技巧部分是为了得到一些帮助。
child_list大小:0
您使用方法void Message::add_child(Message* child)
添加到列表中,然后尝试使用void Topic::print() const
打印出列表。
Message
和Topic
类是否通过继承相互关联?还是它们都持有对同一child_list
实例的引用?
从你发布的代码来看,我认为有多个child_list
矢量,而你可能是从错误的矢量打印的?
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 添加自定义析构函数时,Move 构造函数在派生类中消失
- 添加新纹理OpenGL时,模型消失了
- 为什么在这里添加一个临时变量会使这个编译器错误消失?类型相同
- 当我添加OpenGL转换时,我的图像不断消失
- 添加printf语句时,NULL指针异常消失
- 添加图标时,QMenu 项目文本消失
- 当插入到CCDictionary中时,将标签添加到扩展CCNode的Cocos2d-x将消失
- Visual C++ 2010:如果我将"const"添加到一个比较中,为什么"signed/unsigned mismatch"消失了?
- 将异常信息添加到小型转储时,堆栈信息将消失
- Push_back元素在添加后会消失