2013-03-23 3 views
0

함수 매개 변수를 가질 수 있는지, 그 유형이 무엇인지 신경 쓰지 않을지 궁금합니다. 예를 들어, 나는 재정의 < < 연산자를 가진 클래스가 있습니다. 일반화 된 매개 변수

CLog& CLog::operator <<(const char * txt) { 
    buffer << txt; 
    return *this; 
} 

그러나, 이것은 단지 나 버퍼에 CONST 문자를 쓸 수 있습니다 : 그것은, 수행하는 유일한 방법은하지만, 개인 ostringstream에 PARAM를 추가합니다. 매개 변수가 어떤 유형이든 필요합니다. ostringstream << 수락합니다. 그게 가능하니?

답변

5

당신이 사용할 수있는 템플릿 :

template <typename T> 
CLog& CLog::operator <<(const T& p) { 
    buffer << p; 
    return *this; 
} 
1

이이 템플릿을 사용하여 수행 할 수 있습니다

template <class T> 
Clog& Clog::operator <<(const T& t) { 
    buffer << t; 
    return *this; 
} 
1

당신은이 경우에 template를 사용할 수 있습니다.

template<class T> 
CLog& Clog::operator <<(const T& value) { 
    buffer << value; 
    return *this; 
} 

는하지만 ofstringstream에 대한 무효의 아무것도 통과하지 있는지 확인합니다.

+0

와우. 3 개의 거의 동일한 대답 사이의 3 초 차이. : v 다른 포럼에서 자주 보지 못합니다. –

0

다른 답변은 기본적으로 정확하지만 이동 작업을 지원하지 않습니다. 사용

template <typename T> 
CLog& CLog::operator <<(T&& p) { 
    buffer << std::forward<T>(p); 
    return *this; 
}