Assume a templated base class:
template<typename T>class BaseClass;
在其他的类中,我想继承这个类,其中T
是一个相当复杂的类型,所以我想使用typedef
。因为我不想污染命名空间,所以我想要在类定义内部使用typedef
:
class ChildClass : public BaseClass<MyVeryVeryVeryComplicatedType> {
typedef MyVeryVeryComplicatedType LocalType;
...
}
现在,我当然还不能使用
LocalType
作为BaseClass
的模板参数,只能写两次复杂的定义(MyVeryVeryComplicatedType
)。 (所以标题问题的答案是“不”,我想。)问题:有没有办法仅将定义放在类中(或以类似限制
LocalType
范围的方式),但仍然只定义一次?注意:我考虑使用宏,但注意到结果与在类定义之前使用
typedef
相同(甚至更糟)。编辑:为了澄清:我有一个基类,因为我想要有几个不同的子类共享一些功能。 共享部分只需要知道有某种类型
T
。 由于在子类中使用的类型的细节与共享功能无关,因此我认为基类不应该知道这些细节(实际上,我必须将许多#include
语句放入基类中,以便能够为所有子类定义typedef
)。 每个子类都有一个非常不同的MyVeryVeryVeryComplicatedType
。
typedef
,然后在类外部不带类限定符引用它。 - 101010