2012-10-23 42 views
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); 

房間有一個重載的朋友操作< <:

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"; 
} 

因爲現在它o輸出地址爲房間對象。我需要它撥打我的運營商 < <運營商。

謝謝你的回答。

+0

爲什麼指針和爲什麼'新'...這是痛苦的代碼。 –

+0

@Kerrek SB因爲我使用函數CreateRoom()來創建房間,因此我必須使用新的 – evodevo

+0

嗯...我不認爲這是一個真正的參數,但這是脫離主題。別擔心。 –

回答

4

像這樣:

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

rooms[i]返回一個指向Room,這就是爲什麼cout正在打印的地址。爲了獲得對象本身,你必須對其進行解引用(如上所述)。