如何避免在头文件中定义整个模板类

时间:2017-04-14 11:22:27

标签: c++ oop c++11 templates

我有这样的课程:

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会员)。我怎么能避免这个?你有什么想法?

1 个答案:

答案 0 :(得分:5)

您可以将不依赖于T的所有内容放在基类中并从中继承。无论如何,已经是这个类是一个模板的事实,但是有很多方法不依赖于模板参数,这表明你把东西放在一个更好属于单独类的单个类中。