Я пытаюсь создать абстрактный класс A, который будет унаследован классом B;
Класс A имеет одну единственную чистую виртуальную функцию, которая правильно определена классом B, однако приведенный ниже код не компилируется, что дает мне ошибку Symbol could not be resolved:
class A {
public:
A() {foo();}
virtual void foo() = 0;
};
class B : public A {
public:
B() : A() {}
void foo() override {}
};
int main() {
B b = B();
return 0;
}
Может кто-нибудь объяснить мне, почему? Я думал, что динамическое связывание позволит мне вызвать чистую виртуальную функцию в конструкторе базового класса, если она определена классом B (в основном я инициализирую объект B по умолчанию, поэтому foo() определен правильно);
Что мне не хватает? Спасибо.





«Не удалось разрешить символ» не является ошибкой компилятора. Это ваша ошибка IDE. Вам необходимо правильно настроить вашу IDE. Мы понятия не имеем, что не так с вашей настройкой, поскольку не видим этого. Все, что мы можем видеть, это ваш исходный код, который с точки зрения компилятора является правильный (но не делает то, что вы хотите, чтобы он делал).