编译器错误 C2688
“C2::fgrv”:协变返回不支持用于 varargs 函数的多重或虚拟继承
函数包含可变参数时,Visual C++ 不支持协变返回类型。
若要解决此错误,请通过定义函数让它们不使用变量参数,或使所有虚拟函数的返回值都相同。
下面的示例生成 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&
};