Пожалуйста, помогите мне. Я действительно плохо разбираюсь в полиморфизме. У меня есть классы, унаследованные один от другого.Вызов дочерней виртуальной функции от родителя
EDIT: Извините, полностью моя ошибка. Даже я прошел около 2 часов, чтобы найти проблему. Те, кому это интересно (спасибо за помощь)
if (type.compare("TEST1") == 0) result = new Test(ID, database);
if (type.compare("TEST2") == 0) result = new Test(ID, database);
if (type.compare("TOR") == 0) result = new Tor(ID, database);
«== 0» полностью отсутствует.
class A {
public:
void go() {do();}
virtual void do() {printf('A');}
}
class B:public A {
virtual void do() {printf('B');}
}
int main {
A* obj = new B();
obj->go();
}
Результат: «A» не «B». Как я могу сделать это «B»?
Спасибо.
** Это не ваш настоящий код **. И результат ** - 'B' **, если вы исправляете опечатки, чтобы компилировать код. –
Так много ошибок, делает OP кажутся ленивыми. – DanielKO
Нет, это не так, как было бы долго. Я просто получил проблему, которую мне нужно решить. Благодарю. – Teddy