【发布时间】:2011-06-12 23:02:36
【问题描述】:
我遇到了一个奇怪的现象,模板类似乎可以扩展私有嵌套类。
给定以下私有嵌套类:
class A {
private:
class B {
protected:
void doSomething() {
...
}
};
};
以下内容未按预期编译:
class C : public A::B {
public:
C() {
this->doSomething();
}
};
但是,gcc 似乎很高兴地接受了以下内容,它编译时不会发出呜咽声,并且实际上确实调用了该方法:
template<typename T>
class C : public A::B {
public:
C() {
this->doSomething();
}
};
有谁知道这是使用模板时的预期行为,还是我在 gcc 中发现了一个奇怪的地方。我使用的是 4.4.5 版(Ubuntu/Linaro 4.4.4-14ubuntu5),所以我意识到我有点过时了。如果这是预期的行为,我真的很感激解释(或指向解释的指针),因为这不是我所期望的,我想了解更多。
非常感谢, 马特
【问题讨论】:
-
FWIW,这是一个可编译的测试用例:ideone.com/nJiOU
-
感谢本。非常感谢!
-
此错误已被报告 - 请参阅 bugzilla。 (我正要提交类似的错误报告:)
标签: c++ templates inheritance nested