2013-05-22 6 views
1

클래스를 확장하려고하지만 퍼스트 클래스의 구조를 사용합니다. 무엇을 잘못하고 있습니까?클래스를 올바르게 확장하는 방법

class Test 
{ 
public: 
    Test(const char *str) 
    { 
     cout<<str<<endl; 
    } 
    virtual const char *getName() =0; 
}; 

class Babah : public Test 
{ 
    const char *getName() 
    { 
     return "Babah extends Test"; 
    } 
}; 

답변

2

코드의 문제는 Test 클래스는 '기본'(비 매개 변수화) 생성자가 없다는 것입니다. 따라서 자식 클래스에서 명시 적으로 호출해야합니다.

class Test 
{ 
public: 
    Test(const char *str) 
    { 
     cout<<str<<endl; 
    } 
    virtual const char *getName() =0; 
}; 

class Babah : public Test 
{ 
public: 
    Babah(): Test("foo") // Call the superclass constructor in the 
          // subclass' initialization list. 
    { 
      // do something with Babah or keep empty 
    } 
    const char *getName() 
    { 
     return "Babah extends Test"; 
    } 
}; 
:

다음 코드를 사용해보십시오

관련 문제