Aviso do compilador (nível 1) C4526

'function': a função membro static não pode substituir a função virtual 'virtual function'. A substituição será ignorada, e a função virtual será ocultada

A função membro static atende aos critérios para substituir a função virtual, o que torna a função membro virtual e estática.

O código a seguir gera o erro C4526:

// C4526.cpp
// compile with: /W1 /c
// C4526 expected
struct myStruct1 {
   virtual void __stdcall func( int ) = 0;
};

struct myStruct2: public myStruct1 {
   static void __stdcall func( int );
};

Estas são as possíveis correções:

  • Se a intenção com a função for substituir a função virtual da classe base, remova o especificador estático.

  • Se a intenção for que a função seja uma função membro static, renomeie-a para que ela não entre em conflito com a função virtual de classe base.