2

我有一个名为 Room 的类,Room 类具有 setPrice 和显示功能。

我将房间对象存储在向量中:

room.push_back(Room("r001", 1004, 2, "small"));
room.push_back(Room("r002", 1005, 2, "small"));
room.push_back(Room("r003", 2001, 4, "small"));
room.push_back(Room("r004", 2002, 4, "small"));

在我的主要功能中,我创建了一个显示功能来显示所有房间。这是我的代码:

void displayRoom()
{
    vector<Room>::iterator it;
    for (it = room.begin(); it != room.end(); ++it) {
         *it.display(); // just trying my luck to see if it works
    }
}

但它不调用 Room 的显示方法。

如何调用 Room(class) 的显示方法(无参数)和 setPrice(1 参数) 方法?

4

4 回答 4

12

取消引用的优先级高于成员访问。您可以添加括号 ( (*it).display()),但您应该只使用很久以前(在 C 中)引入的快捷方式:it->display().

当然,同样的规则适用于指针和其他所有可以取消引用的东西(其他迭代器、智能指针等)。

于 2011-01-23T18:03:24.473 回答
3

尝试(*it).display()或干脆it->display()

于 2011-01-23T18:03:17.223 回答
1

迭代器有点像指针。所以你想要:

it->display();

或者:

(*it).display();
于 2011-01-23T18:03:32.387 回答
0

使用Vector,你也可以使用经典形式

for(size_t x = 0; x < room.size(); x++) {
    room[x].display(); //for objects
    //room[x]->display(); //for pointers
}
于 2019-03-01T11:36:59.790 回答