В дополнение к превосходному ответу Криса Морриса, приведенному выше, я обнаружил очень интересный способ получения этой же ошибки, если вы вызываете виртуальный метод, который не был установлен в чистый, но не имеет собственной реализации.Это та же самая причина (компилятор не может найти реализацию метода и, следовательно, мошенников), но моя IDE не уловила эту ошибку ни в малейшей степени. Например,
, следующий код получитошибка компиляции с тем же сообщением об ошибке:
//code testing an interface
class test
{
void myFunc();
}
//define an interface
class IamInterface
{
virtual void myFunc();
}
//implementation of the interface
class IamConcreteImpl
{
void myFunc()
{
1+1=2;
}
}
Однако изменение IamInterface myFunc () на чистый виртуальный метод (метод, который «должен» быть реализован), чем виртуальный метод, который является методом«can» может быть переопределено) устранит ошибку компиляции.
//define an interface
class IamInterface
{
virtual void myFunc() = 0;
}
Надеется, что это поможет следующему пользователю StackOverFlow пройти код!