【发布时间】:2017-05-09 15:54:28
【问题描述】:
我首先初始化一个酒店对象,然后初始化一些房间对象并分别打印它们的 id(正确打印出来。)
for(int j=0;j<5;j++){
Room r(1, 30);
hotel.addRoom(r);
cout << "Id: " << r.getId() << endl;
}
然后,我在列表上做这个迭代:
cout << "Initialized rooms with Ids: ";
for(auto iterator : hotel.getRooms()){
cout << iterator->getId() << " ";
}
cout << endl;
此外,这里是 Hotel 类中这些方法的实现:
//header
list<Room*> rooms;
//source
list<Room*> & Hotel::getRooms(){
return rooms;
}
所有其他部分(如 id 生成和对象构造)都经过测试并且工作正常。
【问题讨论】:
-
我会假设 addRoom 按预期工作。在这种情况下,您有 std::list of dangling pointers。
-
我猜问题出在你的 Room 类的某个地方。请也提供该代码。
标签: c++ list pointers iterator auto