Поделиться через


Ошибка компилятора C3650

"interface_method" : не может использоваться в качестве явной переопределения, должен быть виртуальной функцией-членом базового класса.

Предпринята попытка выполнить явное переопределение элемента, который не был виртуальным.

Дополнительные сведения см. в разделе "Явные переопределения".

Следующий пример приводит к возникновению ошибки C3650:

// C3650.cpp
// compile with: /clr
public interface struct I {
   void a();
};

public ref class S {
public:
   static int f() { return 0; }
   static int g() { return 0; }
};

public ref struct T1 : public S, I {
   virtual int f() new sealed = S::f;   // C3650
   virtual int g() { return 0; }   // OK does not override S::g
   virtual void a() new sealed = I::a {}   // OK
};