0

オブジェクトへのポインタの配列があります

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();
}

次のように部屋の配列を出力するにはどうすればよいですか:

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

Roomオブジェクトにアドレスを出力するようになったからです。Room << オペレーターを呼び出す必要があります。

回答ありがとうございます。

4

1 に答える 1

4

そのようです:

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

rooms[i]へのポインターを返します。これがアドレスを出力するRoom理由です。coutオブジェクト自体を取得するには、それを逆参照する必要があります (上記のように)。

于 2012-10-23T15:38:38.687 に答える