Udostępnij za pośrednictwem


Błąd kompilatora C2688

'C2::fgrv': kowariantnego zwraca z wieloma lub wirtualnego dziedziczenia nie jest obsługiwana dla funkcji varargs

Kowariantnego zwracanych typów nie są obsługiwane w programie Visual C++, gdy funkcja zawiera zmienne argumentów.

Aby rozwiązać ten problem, albo definiują funkcje, tak aby nie używać zmiennych argumentów lub wprowadzić wartości zwracanych takie same dla wszystkich funkcji wirtualnych.

Poniższy przykład spowoduje wygenerowanie błędu 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&
};