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

How to avoid defining the whole template class in header file

本文关键字:定义 何避免 文件      更新时间:2023-10-16

我有这样的类:

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;
};

在这个例子中,我只需要在一个地方(privateMethodA(t模板字段,它迫使我在头文件中定义每个方法(但他们不使用t成员(。我怎样才能避免这种情况?你有什么想法吗?

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