Я пытаюсь расширить класс, но использую конструкцию из первого класса, что я делаю не так?
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";
}
};
Проблема в вашем коде в том, что ваш 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";
}
};
Других решений пока нет …