Недавно я наткнулся на другую проблему на C++, которая дала мне довольно много времени. Предположим, что мы имеем небольшую программу:Указатели на виртуальные классы
class A {
public:
virtual bool c() = 0;
virtual bool b() = { return false; };
virtual ~A() {}
}
class B : public A {
public:
bool b() = { return true; };
~B() {}
}
...
void c(A *pointer) {
if (pointer->b()) {
cout << "Derived class";
}
}
В этом случае компилятор возвращает ошибку на «если» линии метода с() с ошибкой «доступа к члену в неполном типа А». Может кто-нибудь объяснить мне, почему компилятор возвращает такую ошибку? И если это действительно так, если вы стреляете в исключение, то как я могу его предотвратить?
Большое спасибо!
Вы действительно пытаетесь скомпилировать код, который вы публикуете? В коде есть несколько синтаксических ошибок. И кстати: я скопировал ваш код и исправил простые ошибки. Все прекрасно компилируется. –