Вы забыли объявить Derived::method()
.
Вы пытались определить его как минимум, но написали Derived::Interface::method()
вместо Derived::method()
, но вы даже не пытались его объявить. Поэтому его не существует.
Следовательно, Derived
не имеет method()
, поэтому чисто виртуальная функция method()
из Interface
не была переопределена ... и, следовательно, Derived
также является чисто виртуальной и не может быть создана.
Кроме того, public void method()=0;
не является допустимым C ++; это больше похоже на Java. Чистые виртуальные функции-члены должны быть виртуальными, но вы не написали virtual
. И спецификаторы доступа сопровождаются двоеточием:
public:
virtual void method() = 0;