Udostępnij za pośrednictwem


Błąd kompilatora C2688

"C2::fgrv": kowariantne zwracane z wieloma lub wirtualnymi dziedziczeniami nieobsługiwane w przypadku funkcji varargs

Kowariantne typy zwracane nie są obsługiwane w języku Visual C++, gdy funkcja zawiera argumenty zmiennych.

Aby rozwiązać ten błąd, zdefiniuj funkcje tak, aby nie używały argumentów zmiennych lub zwracały wartości takie same dla wszystkich funkcji wirtualnych.

Poniższy przykład generuje kod C2688:

// C2688.cpp
struct G1 {};
struct G2 {};
struct G3 : G1, G2 {};
struct G4 {};
struct G5 {};
struct G6 : G4, G5 {};
struct G7 : G3, G6 {};

struct C1 {
   virtual G4& fgrv(int,...);
};

struct C2 : C1 {
   virtual G7& fgrv(int,...);   // C2688, does not return G4&
};