class A { public: virtual void doSomething(void) {} void doStuff(void) { doSomething(); } }; class B : public A { public: void doSomething(void) { // do some stuff here } }; B * b = new B; b->doStuff();
Это дает мне ошибку сегментации. Что я делаю неправильно? По моему мнению, это должно хорошо работать!
После того, как я исправил синтаксические ошибки и добавил функцию main (), она скомпилирована и выполнена для меня без проблем. Попробуйте опубликовать РЕАЛЬНЫЙ код, который вызывает проблему, и переосмыслите форматирование кода.
Насколько я вижу, вы не делаете полиморфизма в коде ниже определения класса.
b->doStuff() должен вызывать метод класса B. Если вы хотите, чтобы внутри B позвонить A-> doSomething, вы можете использовать A:: doSomething
b->doStuff()
B
A-> doSomething
A:: doSomething
Вы не должны иметь : после class A и public A ...
:
class A
public A