分享方式:


編譯器錯誤 C2688

'C2::fgrv' :varargs 函式不支援多個或虛擬繼承的 covariant 傳回

當函式包含變數引數時,Visual C++ 不支援 Covariant 傳回型別。

若要解決此錯誤,請定義您的函式,使其不會使用變數引數,或讓所有虛擬函式的傳回值都相同。

下列範例會產生 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&
};