【发布时间】:2019-01-04 01:06:32
【问题描述】:
我想创建一个继承自模板类 A 的类 B。我希望 B 的嵌套类 E 成为此继承中的模板参数。更直观:
template <class T>
class A {
}
class B : public A<B::E> {
class E {
int x;
}
}
class C : public A<C::E> {
class E {
int x;
int y;
}
}
我认为问题在于编译器在处理 B 的声明时并不知道 B 类将有一个嵌套类 E,因为我收到了错误:
“B”中没有名为“E”的成员
我已经看到了这个similar question,但我想确认在放弃这种方法之前没有直接解决这个冲突的方法。
谢谢!
【问题讨论】:
-
你需要一个
B::E的前向声明,但这在 C++ 中目前是不可能的。
标签: c++ templates inheritance inner-classes