Как это:
class base {
public:
virtual void Foo() = 0;
}
class sub : public base {
public:
void Foo() {
std::cout << "In Sub!" << std::endl;
}
}
Обратите внимание на использование ключевого слова virtual
. В C++, если явно не объявлено, реализация функций не просматривается во время выполнения, например C#, Objective-C или Java. Таким образом, мы должны указать время выполнения:
«Привет, у нас есть функция, которая должна быть реализована во время выполнения, поэтому не предполагайте, что она относится к классу base
, но относится к подклассу».
Также обратите внимание на часть декларации функции = 0
. В C++ это описывает функцию pure virtual
. Без него base
не может быть абстрактным, если не существует другой функции, которая называется pure virtual
в классе.
[Переполнение стека не является сервисом перевода кода] (http://meta.stackexchange.com/a/129362). Объясните требования на простом английском языке, а не в коде на другом языке программирования. – dtb
Попробуйте 'Base :: Foo();' в производном классе 'Foo' –
Этот код не компилируется в C#« Невозможно вызвать абстрактный базовый элемент ». – DaveShaw