编译器错误 C2387

“type”:不明确的基类

编译器无法明确解析函数调用,因为该函数存在于多个基类中。

若要解决此错误,请从继承中删除其中一个基类,或显式限定函数调用。

以下示例生成 C2387:

// C2387.cpp
namespace N1 {
   struct B {
      virtual void f() {
      }
   };
}

namespace N2 {
   struct B {
      virtual void f() {
      }
   };
}

struct D : N1::B, N2::B {
   virtual void f() {
      B::f();   // C2387
      // try the following line instead
      // N1::B::f();
   }
};

int main() {
   D aD;
   aD.f();
}