'type' は 'file1' および 'file2' 内で異なるサイズを含んでいます: number および number バイト
2 つのファイルで参照または定義された 1 つの外部変数の型が、これらのファイルの間で異なっています。また、file1 の変数と file2 の変数のサイズが異なっていることも確認されました。
この警告が C++ に対して出された場合は、次の点が重要になります。2 つのファイルに同じタイプを同じ名前で宣言した場合、これらの宣言に仮想関数が含まれている場合、および宣言が異なる場合は、仮想関数テーブルに関して C4744 警告が出されます。この警告が出されるのは、同じ型に対してサイズの異なる仮想関数テーブルが 2 つあるので、リンカはどちらか 1 つを選択して実行可能ファイルに結合する必要があるからです。この結果、プログラムが間違った仮想関数を呼び出すことがあります。
この警告を解決するには、同じ型定義を使用するか、異なる型名または変数名を指定します。
使用例
次の例では、1 つの型定義を使用します。
// C4743a.cpp
// compile with: /c
class C {
public:
virtual void f1(void);
virtual void f2(void);
virtual void f3(void);
};
void C::f1(void) {}
void C::f2(void) {}
void C::f3(void) {}
C q;
次の例では C4743 エラーが生成されます。
// C4743b.cpp
// compile with: C4743a.cpp /W1 /GL /O2
// C4743 expected
class C {
public:
virtual void f1(void);
virtual void f2(void);
virtual void f3(void);
virtual void f4(void);
virtual void f5(void);
};
void C::f4(void) {}
void C::f5(void) {}
C x;
int main() {}