此代码示例将描述我认为不直观的语言功能。
class A {
public:
A() {}
};
class B: private A
{
public:
B() {}
};
class C: public B
{
public:
C() {}
void ProcessA(A* a) {
}
};
int main() {
C c;
}
在 Mac 上使用 Apple LLVM 4.2 版编译此代码会产生一个
test.cc:16: error: ‘class A’ is inaccessible
test.cc:16: error: within this context
替换void ProcessA(A* a)
为void ProcessA(::A* a)
可以构建,但我不明白为什么要在这里使用绝对类名。它是一种语言功能,是为了避免某种错误,还是只是一个黑暗的 C++ 语法角落,比如要求> >
在使用其他模板参数化的模板中的尖括号 ( ) 之间放置空格。谢谢!