如何调用<<运算符在数组中的对象?

时间:2012-10-23 15:37:54

标签: c++ operator-overloading ostream

我有一个指向对象的指针数组

Room *rooms[MAX_ROOMS];

rooms[0] = new Room(101, 1, RT_CLASSIC, 200.00);
rooms[1] = new Room(102, 2, RT_CLASSIC, 280.00);
rooms[2] = new Room(103, 4, RT_FAMILY_SUITE, 360.00);

Class Room 有一个重载的好友运算符<<:<:

std::ostream& operator<<(std::ostream &out, const Room &room) {
    return out << room.toString();
}

如何输出 rooms 数组,如下所示:

for(int i = 0; i < num_of_rooms; i++) {
    cout << rooms[i] << "\n";
}

因为现在它将地址输出到 Room 对象。我需要它来打电话给我的房间&lt;&lt;运营商。

感谢您的回答。

1 个答案:

答案 0 :(得分:4)

像这样:

cout << *(rooms[i]) << "\n";

rooms[i]返回指向Room的指针,这就是cout打印地址的原因。要获取对象本身,您必须取消引用它(如上所述)。