【发布时间】:2012-05-06 13:43:20
【问题描述】:
我正在尝试找到一种方法来获取模板参数的基类。
考虑以下类:
template <class C>
class Foo
{
public:
Foo(){};
~Foo(){};
C* ptr;
};
如果 C 是一个引用(例如 Test&)那么 ptr 是类型 C&*
但无论 C 是引用、指针还是其他任何东西,我都需要获取基类的指针。
- 如果 C 是 Test& 那么 ptr 需要是 Test*,
- 如果 C 是 Test* 那么 ptr 需要是 Test*,
- 如果 C 是 Test 那么 ptr 需要是 Test* 等等。
有没有办法获得 C 的“基”类,这样我就可以创建我需要的指针了?
【问题讨论】:
-
如果
C是Test***或Test[1][2]怎么办?还是Test const*? -
我没有时间写一个完整的答案,但检查(即谷歌)参考和指针类型的部分模板专业化。
-
关于这个主题的好书是:D. Vandevoorde, N.M. Josuttis “C++ 模板。完整指南”和 Alexandrescu “现代 C++ 设计:应用的通用编程和设计模式”。这些书籍包含大量此类示例,并提供了模板元编程技术(如特征和策略)的体验。
标签: c++ templates pointers reference