Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
cast tussen verschillende pointer naar lidweergaven, compiler kan onjuiste code genereren
Opmerkingen
Er is een onjuiste typeconversie tussen aanwijzers naar lidtypen aangetroffen.
C4407 kan worden gegenereerd vanwege het conformance-werk van de compiler dat is uitgevoerd in Visual Studio 2005. Aanwijzer-naar-lid vereist nu een gekwalificeerde naam en het adres van de operator (&).
C4407 kan optreden als u tussen een meerdere overname pointer-to-member naar één overname pointer-to-member cast. Soms kan dit werken, maar soms niet omdat de weergave van een enkele overervingsaanwijzer naar een lid niet voldoende informatie bevat. Compileren met /vmm kan mogelijk helpen. Zie voor meer informatie /vmm, /vms, /vmv (Weergave voor algemeen gebruik). U kunt ook proberen uw basisklassen opnieuw te rangschikken; de compiler detecteert een verlies van informatie in de conversie omdat een basisklasse zich op een niet-nul offset bevindt van de afgeleide.
Example
In het volgende voorbeeld wordt C4407 gegenereerd en ziet u hoe u dit kunt oplossen:
// 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)
}