涉及私有继承的C编译器错误

有人可以向我解释以下编译器错误:

struct B
{
};

template <typename T>
struct A : private T
{
};

struct C : public A<B>            
{                                                                             
    C(A<B>);   // ERROR HERE
};

指示行的错误是:

test.cpp:2:1: error: 'struct B B::B' is inaccessible
test.cpp:12:7: error: within this context

究竟什么是难以接近的,为什么?

试试A< :: B个或A< struct B>.

在C的内部,对B的非限定引用将获取所谓的inject-class-name,它通过基类A引入.由于A从B私有继承,注入类名跟随,也将是私人,因此C不可访问

另一天,另一种语言怪癖……

相关文章
相关标签/搜索