Kompilatorvarning (nivå 4) C4256

funktion: konstruktorn för klassen med virtuella baser har "..."; anrop kanske inte är kompatibla med äldre versioner av Visual C++

Anmärkningar

Möjlig inkompatibilitet.

Tänk dig följande kodexempel. Om definitionen av konstruktorn S2::S2( int i, ... ) kompilerades med hjälp av en version av Microsoft C++-kompilatorn före version 7, men följande exempel kompileras med den aktuella versionen, skulle anropet till konstruktorn för S3 inte fungera korrekt på grund av en ändring av anropskonventionen. Om båda kompilerades med hjälp av Visual C++ 6.0 skulle anropet inte heller fungera helt rätt, såvida inte inga parametrar skickades för ellipsen.

Åtgärda den här varningen genom att

  1. Använd inte ellipser i en konstruktor.

  2. Kontrollera att alla komponenter i projektet har skapats med den aktuella versionen (inklusive bibliotek som kan definiera eller referera till den här klassen) och inaktivera sedan varningen med hjälp av varnings-pragma.

Example

I följande exempel genereras 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()
{
}