2014-09-24 2 views
-1

과제는 Pair 클래스의 벡터를 보유한 PairList 클래스를 만드는 것이 었습니다. 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의 사용을 제거하기 위해 어떤 일들이 있었거나해야만합니까? 이것은 지금 경고입니다. 레벨 1 수업에서 70 %처럼 진지한 점을 시작하십시오. "

그는 자신이 원하는 기능에 대해별로 구체적이지 않으며 필요한 것으로 생각되는 것을 만들도록했습니다. 나는 A를 받았지만 왜이 함수에서 cout을 사용해서는 안되는지 알고 싶었습니다.

유틸리티 기능에서 cout을 사용하는 것이 나쁜 이유는 무엇입니까?
대신 무엇을해야합니까?

죄송합니다. 모호한 질문입니다. 나는 그것을 게시 한 후에 깨닫는다. 또한 모든 매우 빠른 피드백에 압도당했습니다!

+3

이 할 수있는 나쁜 일 밝혔다 누가 당신이해야

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

을하고있다했다? –

+0

나의 프로그래밍 선생 – TodaDyle

+0

"내가 좋아하는 사람에 대해 말할 것이 한 가지는 기능 상으로는 사용 된 것이 아니라 속한다는 것입니다. 나는 그것이 정확하지 않은 것과 왜 어떤 것들이 가질 수 있었는지에 대한 귀하의 의견을 원합니다. 이 함수들에서 cout의 사용을 제거하기 위해 수행되었습니다. " – TodaDyle

답변

0

내가 용의자 누구든지 클래스에서 cout을 사용하는 것이 나쁜 것을 생각하고, 대신

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

이것은 대단한 오프닝입니다. 이렇게하기에있는 이득을 기술하기 위하여 "너는 이것을 원하기 때문에 ...."을 위해 구걸한다 *. – WhozCraig

0

여기에는 두 가지 문제점이 있습니다. 헤더와 관련하여 일반적으로 헤더 파일에 구현을 배치하면 안되기 때문에 std::cout 명령은 부적절합니다. 클래스에 관해서는 크게 의존합니다 - 어떤 경우에는 클래스 함수에서 cout을 사용하면 완벽하게 문제가되지 않습니다.

+0

어떤 종류의 함수/클래스/조합에 따라, 어떤 이유로, 헤더에 그 구현이 있습니다. 또한 구현 파일에'inline' 함수를 넣고 사용하는 것은 약간 어렵습니다. – Deduplicator

+0

절대적으로, 좋은 점은'inline' 함수가 주목할만한 예외입니다. 나는 OP가 언급 한 것이 아니라는 것을 합리적으로 확신했지만, 당신이 나를 상기 시켰기 때문에 기쁩니다. – dhganey