我正在尝试确定我的代码出了什么问题,而且我完全不知道问题是什么。我有一个迭代器,它在向量中返回对象的错误值,即使在GDB中打印该对象显示正确的字段。循环内的代码与此特定问题无关。 我在下面的循环中使用的三个对象和函数是
class User{
string password;
string username;
string getName() {return username}
string getPass() {return password}
};
class Room{
vector<User> users;
vector<Message> messages;
string name;
vector<User> getUsers() {return users}
vector<Message> getMessages() {return messages}
string getName() {return name}
};
class Message{
User sender;
string message;
User getSender() {return sender}
string getMessage() {return message}
};
我的循环中的代码是
vector<Room>::iterator roomIt;
vector<Message>::iterator messIt;
for(roomIt = rooms.begin(); roomIt < rooms.end(); roomIt++) {
for (messIt = roomIt->getMessages().begin(); messIt < roomIt->getMessages().end(); messIt++) {
.........
}
}
在gdb中,当我使用print roomIt->getMessages().begin()
时,我得到了
{sender = {password = "robin", username = "batman"}, message = "hello"}
但是,当我使用print messIt
或print *messIt
时,我会
{sender = {password = "batman", username = "hello"}, message = "robin"}
可能导致这种差异的原因是什么?我完全迷失了,因为我无法看到打印对象是如何提供正确的输出,同时设置等于该对象的messIt引用会改变值。