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.
'function' : constructor voor klasse met virtuele bases heeft ...; aanroepen zijn mogelijk niet compatibel met oudere versies van Visual C++
Opmerkingen
Mogelijke incompatibiliteit.
Bekijk het volgende codevoorbeeld. Als de definitie van de constructor S2::S2( int i, ... ) is gecompileerd met een versie van de Microsoft C++-compiler vóór versie 7, maar het volgende voorbeeld wordt gecompileerd met behulp van de huidige versie, werkt de aanroep van de constructor voor S3 niet correct vanwege een wijziging in de speciale aanroepconventie. Als beide zijn gecompileerd met behulp van Visual C++ 6.0, werkt de aanroep ook niet helemaal goed, tenzij er geen parameters zijn doorgegeven voor het beletselteken.
Om deze waarschuwing op te lossen,
Gebruik geen beletseltekens in een constructor.
Zorg ervoor dat alle onderdelen in hun project zijn gebouwd met de huidige versie (inclusief bibliotheken die deze klasse kunnen definiëren of ernaar verwijzen), en schakel vervolgens de waarschuwing uit met behulp van de waarschuwingspragma.
Example
In het volgende voorbeeld wordt C4256 gegenereerd:
// 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()
{
}