생성자 안에서 생성자 부르기


C#개발 할 때는 밑의 코드처럼 썼었는데 C++에서는 어떻게 하는지 궁금합니다. 클래스 이름을 부르려고 this() 썼는데 안 된다고 나오네요 왜죠

소스코드

class Test {
public:
    Test() {
        //DoSomething
    }
    Test(int count) : this() {
        //DoSomething
    }
    Test(int count, string name) : this(count) {
        //DoSomething
    }
};
  • 2016년 01월 05일에 작성됨

조회수 217


1 답변


좋아요
0
싫어요
채택취소하기

C++11 이상에서는 생성자 안에서 다른 생성자를 부를 수 있습니다 C#이랑은 문법이 좀 달라요

class Test {
public:
    Test() {
        //DoSomething
    }
    Test(int count) : Test() {
        //DoSomething
    }
    Test(int count, string name) : Test(count){
        //DoSomething
    }
};

이런 식으로 쓰시면 됩니다.

C++03를 쓰시는 경우라면 위에 코드는 지원이 안되니까 비슷하게 하려면 다음의 방법이 있습니다.

디폴트 파라미터를 통해 2개 이상의 생성자 합치기

class Test {
public:
    //Test(int)와 Test(int, string) 지원
    Test(int count, string name=NULL){
        //DoSomething
    }
};

init메소드를 만들어서 생성자에서 호출하기

class Test {
public:
    Test() {
        init();
    }
    Test(int count) : Test() {
        init(count);
    }
    Test(int count, string name=NULL){
        init(count, name);
    }
private:
    void init() {}
    void init(int count) { init(); }
    void init(int count, string name) { init(count); }
};
  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close