我有这样的课程:
template <typename T>
class C
{
public:
C(T t): t{t} {}
void publicMethodA() { privateMethodA(); }
void publicMethodB() {}
void publicMethodC() {}
// ...
private:
void privateMethodA() { t.call(); /* only one place that uses t member */ }
void privateMethodB() {}
// ...
T t;
};
在此示例中,我只在一个地方(t
)中需要模板字段privateMethodA
,它强制我在头文件中定义每个方法(但它们不使用t
会员)。我怎么能避免这个?你有什么想法?
答案 0 :(得分:5)
您可以将不依赖于T
的所有内容放在基类中并从中继承。无论如何,已经是这个类是一个模板的事实,但是有很多方法不依赖于模板参数,这表明你把东西放在一个更好属于单独类的单个类中。