Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Umwandlung zwischen verschiedenen Zeigern auf Memberdarstellungen, Compiler generiert möglicherweise falschen Code
Es wurde eine falsche Umwandlung zwischen Zeiger-zu-Member-Typen erkannt.
Hinweise
C4407 kann aufgrund der In Visual Studio 2005 durchgeführten Compilerkonformität generiert werden. Zeiger-zu-Member erfordert jetzt einen qualifizierten Namen und die Adresse des Operators (&).
C4407 kann auftreten, wenn Sie zwischen einem mehrfachen Vererbungspunkt-zu-Member zu einem einzelnen Vererbungspunkt-zu-Element umwandeln. Manchmal kann dies funktionieren, aber manchmal kann dies nicht der Fall sein, weil die einzelne Vererbungspunkt-zu-Member-Darstellung keine ausreichenden Informationen enthält. Kompilieren mit den /vmm
eventuellen Hilfen. Weitere Informationen finden Sie unter /vmm
, , /vms
( /vmv
Allgemeine Darstellung). Sie können auch versuchen, Ihre Basisklassen neu anzuordnen; Der Compiler erkennt einen Verlust von Informationen in der Konvertierung, da eine Basisklasse einen Ungleich-Null-Offset vom abgeleiteten Objekt aufweist.
Beispiel
Im folgenden Beispiel wird C4407 generiert und veranschaulicht, wie Sie es beheben können:
// 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)
}