2012-11-29 71 views
0

類測試:如何在C++中打印類對象?我有細化<<

ostream& operator <<(ostream& os, const Test& test){ 
    os<<"hooooo"<<endl; 
    return os; 
} 

在測試代碼:

Test t2 = Test(10, 20); 

爲什麼cout<< t2 <<endl編譯彈出錯誤?我已經完善了< <。

敵不過在「操作< <「的std ::法院< < T2」

+2

什麼是錯誤? –

+1

當你說「在課堂測試中」時,你的意思是你已經將它定義爲'Test'類的成員函數嗎?不要這樣做,讓它成爲一個免費的功能。 'operator <<'是一個二元運算符。它需要左手參數和右手參數。當你使它成爲一個成員函數時,左邊的參數是隱含的。它是調用對象。如果這不是問題,請給出一個完整的代碼示例來說明問題。 –

回答

0

實際上你需要將它定義爲友元函數。運算符必須由運算符前面的操作數定義。因此,您可以使用friend關鍵字來定義它,以便該功能仍然可以利用您的課堂內部功能,但是可以按照需要的方式工作。如果我不是很清楚,我很抱歉,自從我這樣做以來,它已經有一段時間了。不知道你應該在哪裏放置函數的主體。只需查看friend關鍵字。

+0

不,您不需要將其定義爲朋友。有人會說你應該,我會不同意他們。但他們和我都會同意這肯定沒有必要。 –

+0

好的,謝謝,我從來沒有真正學過C++的那部分內容(主要是因爲我的教科書只是用於刻錄的一種類型) – AJMansfield

相關問題