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

pet*_*555 2 c++ oop templates c++11

我有这样的课:

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;
};
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我只需要t在一个地方(in privateMethodA)中的模板字段,它强制我在头文件中定义每个方法(但它们不使用t成员).我怎么能避免这个?你有什么想法?

for*_*818 5

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