c++ - 使用嵌套类继承模板类
问题描述
我想创建一个继承自模板类 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”的成员
我见过这个类似的问题,但我想确认在放弃这种方法之前没有直接解决这个冲突的方法。
谢谢!
解决方案
我能想到的最接近的事情是使用基类。
template <class T>
class A {
};
class B; // forward declaration of ::B
namespace detail {
class B {
friend class ::B;
class E {
int x;
};
};
} /* namespace detail */
class B : public A<detail::B::E> {
};
推荐阅读
- unity3d - 在方法 OnCollisonEnter2D 中未检测到碰撞
- c# - 如何检查玩家是按住空格键还是按下它?
- latex - LaTeX 中的文章是否只支持三层深度的部分?
- python - 如何列出在 Python 3 中使用 pip 安装的第 3 方项目(库等)
- vba - 在 powerpoint 中查看图片(在 ms 访问中存储为附件)
- javascript - Azure Http Trigger 函数在第一个 webhook 响应后挂断套接字
- apache-spark - 使用 kerberized Dataproc 集群时,8088 上的资源管理器 UI 无法正常工作
- kubernetes - 使用 Istio 在 Kubernetes 上出现 503 UH 错误,但服务正在运行
- django - Errno 13 权限被拒绝:Docker + Celery Beat 中的“/app/celerybeat.pid”
- java - 调用 `repaint()` 是否需要“调用”?