为什么以下代码示例失败?
namespace Base {
class Base {
protected:
int x;
};
class BaseAlt {
};
}
namespace Derived {
class Derived : public virtual Base::Base {
private:
Base::BaseAlt baseAlt;
};
}
int main() {
return 0;
}
g ++编译因以下错误而失败
error: ‘BaseAlt’ in ‘class Base::Base’ does not name a type
Base::BaseAlt baseAlt;
为什么呢?
答案 0 :(得分:0)
编译器正在解析父类“Base :: Base”,它没有名为BaseAlt的内部类。 BaseAlt类的完全限定名称是“:: Base :: BaseAlt”。需要额外的“::”来区分命名空间和类。