编译器错误 C2249

“member”:虚拟基“class”中声明的访问成员没有可访问的路径

member 继承自非公共 virtual 基类或结构。

示例

下面的示例生成 C2249。

// C2249.cpp
class A {
private:
   void privFunc( void ) {};
public:
   void pubFunc( void ) {};
};

class B : virtual public A {} b;

int main() {
   b.privFunc();    // C2249, private member of A
   b.pubFunc();    // OK
}

如果尝试将 C++ 标准库中的流分配到另一个流,也会发生 C2249。 下面的示例生成 C2249。

// C2249_2.cpp
#include <iostream>
using namespace std;
int main() {
   cout = cerr;   // C2249
   #define cout cerr;   // OK
}