2013-05-22 5 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"; 
    } 
}; 

 Смежные вопросы

  • Нет связанных вопросов^_^