Exportar (0) Imprimir
Expandir Tudo
Expandir Minimizar
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

C4407 de aviso (nível 1) do compilador

conversão entre diferentes representações de ponteiro para membro, compilador pode gerar código incorreto

Foi detectado um cast incorreto.

C4407 podem ser gerados por causa do trabalho de conformidade de compilador que foi feito no Visual C++ 2005. Ponteiro para membro agora requer um nome qualificado e o operador adress-of (&).

C4407 pode ocorrer se você converter entre vários herança ponteiro-para-membro para um única herança ponteiro ao membro. Às vezes, isso pode funcionar, mas às vezes não consegue porque a representação de ponteiro para membro de herança única não se mantém informações suficientes. Compilando com o /vmm possam ajudá-lo (para obter mais informações, consulte /VMM, /vms, /vmv (representação de finalidade geral)). Você também pode tentar reorganizar suas classes base; o compilador está detectando uma perda de informações na conversão porque uma classe base está em um deslocamento de zero da derivada.

O exemplo a seguir gera C4407:

// C4407.cpp
// compile with: /W1 /c
struct C1 {};
struct C2 {};
struct C3 : C1, C2 {};

typedef void(C3::*PMF_C3)();
typedef void(C2::*PMF_C2)();

PMF_C2 f1(PMF_C3 pmf) {
   return (PMF_C2)pmf;   // C4407, change type of cast,
   // or reverse base class inheritance of C3 (i.e. : C2, C1)
}

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft