2012-09-18 5 views
1

가능한 중복 :
c++ call constructor from constructor다른 생성자에서 클래스 생성자에 인수를 전달 하시겠습니까?

내가 같은 클래스에 대한 두 개의 생성자를 가지고 있고 두 번째 생성자에 데이터를 전송하는 생성자 중 하나를합니다.

나는 C#에서 그것을 할 방법을 알고하지만 난 C에 새로운 해요 ++ 나는이과 같이 가능하면 모르는 :

class a 
{ 

public: 
a (int x); 
a (int x, int b, char g); 

}; 

a :: a(int x) : this(x, 6, 'h') 
{ 

} 
+0

컴파일러가 C++ 11 기능을 지원합니까? – hmjd

+0

C++ 11에있는 질문에 두 번째 대답을보십시오 –

답변

3

새로운 C++ 11 표준 불리는이 기능을 (지원 생성자 위임). 컴파일러는 새로운 표준을 지원하지 않는 경우

a::a(int x) : a(x, 6, 'h') {} 

, 다른 초기화 방법으로 일반적인 동작을 추출하고 생성자 본문에 그 메소드를 호출해야합니다 구문과 같다.

+0

Thx, 현재 C++ 11을 사용하고 있지 않으므로이 작업을 수행 할 방법이 없습니까 ?? –

+0

나는 대답을 편집했다 : 불행히도. –

+0

@DavidLimkys C++ 11 기능을 사용하지 못하게하는 이유는 무엇입니까? 컴파일러가 지원하지 않기 때문입니까? –

0

C++11에는 가능하지만 이전 버전에서는 불가능합니다.

일반적으로 (가상이 아닌) 멤버 함수에 공통 요소를 넣고 생성자에서이를 호출 할 수 있습니다. 이것이 모든 것을 초기화하는 것을 허용하지는 않지만 (당신이 생성자 몸체에서하는 것들, preamble에서의 초기화가 아닌), 그것은 여전히 ​​"아무것도없는 것보다 낫다."

관련 문제