Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
mellan olika pekare till medlemsrepresentationer kan kompilatorn generera felaktig kod
Anmärkningar
En felaktig typkonvertering mellan pekar-typ till medlems-typ upptäcktes.
C4407 kan genereras på grund av kompilatorns efterlevnadsarbete som utfördes i Visual Studio 2005. Pekare till medlem kräver nu ett kvalificerat namn och adress för operatorn (&).
C4407 kan inträffa om du gjuter mellan en flera arvspekare till medlem till en enda arvspekare till medlem. Ibland kan detta fungera, men ibland kan det inte eftersom den enskilda arvspekaren-till-medlem-representationen inte innehåller tillräckligt med information. Kompilering med /vmm kan vara till hjälp. Mer information finns i /vmm, /vms, /vmv (Allmän representationsanvändning). Du kan också prova att ordna om dina basklasser. kompilatorn identifierar en förlust av information i konverteringen eftersom en basklass har en förskjutning som inte är noll från den härledda.
Example
Följande exempel genererar C4407 och visar hur du åtgärdar det:
// 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)
}