Megosztás a következőn keresztül:


Fordító figyelmeztetés (1. szint) C4407

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)
}