【发布时间】:2014-05-02 13:57:04
【问题描述】:
假设一个模板化的基类:
template<typename T>class BaseClass;
在我想继承的其他类中,T 是一个相当复杂的类型,所以我想使用typedef。因为我不想污染命名空间,所以我想在类定义中添加typedef:
class ChildClass : public BaseClass<MyVeryVeryVeryComplicatedType> {
typedef MyVeryVeryComplicatedType LocalType;
...
}
当然,我现在还不能使用LocalType 作为BaseClass 的模板参数,并且必须编写两次复杂的定义(MyVeryVeryComplicatedType)。 (所以我猜标题问题的答案是“不”。)
问题:有没有办法只定义一次但仍然只在类内部定义(或以类似的方式限制LocalType的范围)?
注意:我考虑过使用宏,但注意到结果与在类定义前添加 typedef 相同(甚至更糟)。
编辑:澄清:我有一个基类,因为我想要几个不同的子类共享一些功能。共享部分只需要知道有一些类型T。由于子类中使用的类型的细节与共享功能无关,我认为基类不应该知道这些细节(实际上,我必须在基类中放入很多#include 语句类能够为所有子类定义typedefs)。每个子类都有一个相当不同的MyVeryVeryVeryComplicatedType。
【问题讨论】:
-
我认为没有办法在
class中定义您的typedef,然后在没有班级资格的情况下解决它。
标签: c++ templates inheritance typedef