2014-09-24 31 views
-1

作業是創建一個PairList類,它包含一個Pair類的向量。 Pair類是保存一種類型的任何兩個變量的模板類。爲什麼在類函數中使用cout被認爲是不好的?

的代碼提示這個問題:

template <class T> 
void PairList<T>::printList() 
{ 
    for(unsigned int i = 0; i < this->pList.size(); i++) 
    { 
     cout << i+1 << ".\t" 
     << (this->pList[i]).getFirst() 
     << "\t" <<(this>pList[i]).getSecond() 
     << endl; 
    } 
} 

東西我的老師說這個代碼:

「有一件事我會說我喜歡的人是兩個使用COUT在功能和它不屬於我希望你的意見,爲什麼它不正確,什麼事情可以或應該已經完成​​,以消除在這些功能中使用cout 這是一個警告現在。開始像對待一級課程中的70%那樣嚴肅點。「

他對於他想要的功能並不十分具體,讓我們創造我們認爲必要的任何東西。我收到了一個A,但想知道爲什麼我不應該在這個函數中使用cout。

爲什麼在效用函數中使用cout是一件壞事?
我該怎麼做呢?

對不起,這是一個模棱兩可的問題。我發現後發現。所有極其快速的反饋都讓我感到不知所措!

+3

誰說這是一個糟糕的事是什麼? – 2014-09-24 21:33:58

+0

我的程序設計教師 – TodaDyle 2014-09-24 21:34:47

+0

「關於我喜歡的東西,我會說的一件事是,它們都在函數中使用了cout,它不屬於我想要的輸入內容,爲什麼它不正確以及可能有什麼或者應該有什麼東西已經完成,以消除在這些函數中使用cout「 – TodaDyle 2014-09-24 21:36:56

回答

0

我懷疑是誰說的一類使用COUT是壞的思考才能,而不是做

type function() 
{ 
. . . . 
cout << "WHATEVER" << endl ; 
. . . . 
} 

,你應該有

type function (std::ostream &strm) 
{ 
. . . . 
strm << "WHATEVER" << endl ; 
. . . . 
} 
+1

這是一個很棒的揭幕戰。這是*乞求「你會想要這個,因爲......」來描述這樣做的好處。 – WhozCraig 2014-09-24 21:45:54

0

這裏有兩個問題。關於頭文件,你通常不應該在你的頭文件中放置實現,所以std::cout命令在那裏不合適。關於你的課程,它很大程度上取決於 - 在某些情況下,在類函數中使用cout非常好。

+0

取決於什麼樣的函數/類/聯合,出於什麼原因,它的頭部實現。此外,將'inline'函數放置在實現文件中並仍然使用它有點困難。 – Deduplicator 2014-09-24 21:40:01

+0

絕對好的,'inline'函數是一個值得注意的例外。我有理由相信這不是OP所指的,但我很高興你能提醒我。 – dhganey 2014-09-25 22:24:10

相關問題