2013-01-24 1 views
1
나는 이러한 종류의 기능을 작성하고자

:알 수없는 유형 및 인수 개수를 허용하는 C++ 함수를 작성하는 방법?

void Print(void* args ...) 
{ 
    while(args) 
    cout<<args[i]; 
} 

funcdtion가 INT 처리해야하고 (표준 : : 문자열이나 숯불 *)

것이 가능을?

+2

달성하려는 목표는 무엇입니까? –

+0

concate 변수 타입/하나의 문자열에 대한 인수의 수 – itamar

+0

'std :: initializer_list '가 작동하는지 확신 할 수 없습니다. C++ 11 기능을 사용합니다. 하지만 시도해 볼 수 있습니다. –

답변

6

당신은 가변 인자 템플릿을 사용하여이 작업을 수행 할 수 있습니다

void Print() { } 

template <typename T, typename ...Args> 
void Print(T const & t, Args const &... args) 
{ 
    cout << t; 
    Print(args...); 
} 
+0

'std :: initializer_list'는 어떻습니까? –

+0

@NeelBasu : 그것은 어떻습니까? 'Print (5, "Hello");'... –

+2

@NeelBasu : 단일 유형, 호출 방법이 제한되어 있습니다. –

4

가에 대한 자신의 함수를 작성

concatenation variable type/number of arguments to one string

필요가 없습니다 응답, 단지 std::stringstream 사용

std::stringstream ss; 
ss << intVar << stringVar << whatever; 
+0

왜이 대답은 downvoted인지 궁금합니다. –

+0

"m"이 붙은'stringstream'이되어야합니다.이 출력 결과는 다음과 같습니다 : void print (std :: initializer_list list) {}' – 0x499602D2