Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Különböző tagra mutató reprezentációk közötti típuskonverzió során a fordító helytelen kódot generálhat.
Megjegyzések
Helytelen típuskonverziót észleltünk a tagmutató típusok között.
A C4407 a Visual Studio 2005-ben végzett fordítói megfelelőségi munka miatt hozható létre. Az egérmutatóhoz mostantól minősített névre és az operátor (> címére) van szükség.
Egy C4407 hibakód akkor fordulhat elő, ha egy többes öröklésre mutató tagot átvált egyetlen öröklésre mutató taggá. Néha ez működik, de néha nem, mert az egyetlen öröklési mutató-tag ábrázolás nem rendelkezik elegendő információval. A fordítás /vmm-al segíthet. További információ: /vmm, /vms/vmv , (Általános célú ábrázolás). Megpróbálhatja átrendezni az alaposztályokat is; a fordító adatvesztést észlel az átalakítás során, mert az alaposztály nem nulla eltolásban van a származtatotttól.
Example
Az alábbi példa létrehozza a C4407-et, és bemutatja, hogyan javítható ki:
// 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)
}