編譯器警告 (層級 4) C4256
'function' :具有虛擬基底之類別的建構函式具有 '...';呼叫可能與舊版 Visual C++ 不相容
可能不相容。
請考慮下列程式碼範例。 如果建構函式 S2::S2(int i, ... ) 的定義是在版本 7 之前使用 Microsoft C++ 編譯程式進行編譯,但下列範例是使用目前版本編譯,S3 的建構函式呼叫將無法正確運作,因為發生特殊案例呼叫慣例變更。 如果兩個都是以 Visual C++ 6.0 編譯的,呼叫也不會正常運作,除非沒有傳遞省略符號參數。
若要修正此警告,
下列範例會產生 C4256:
// C4256.cpp
// compile with: /W4
// #pragma warning(disable : 4256)
struct S1
{
};
struct S2: virtual public S1
{
S2( int i, ... ) // C4256
{
i = 0;
}
/*
// try the following line instead
S2( int i)
{
i = 0;
}
*/
};
void func1()
{
S2 S3( 2, 1, 2 ); // C4256
// try the following line instead
// S2 S3( 2 );
}
int main()
{
}