Как правильно продлить класс

Я пытаюсь расширить класс, но использую конструкцию из первого класса, что я делаю не так?

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";
}
};

1

Решение

Проблема в вашем коде в том, что ваш 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";
}
};
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]