如何避免在头文件中定义整个模板类
How to avoid defining the whole template class in header file
我有这样的类:
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
的所有内容放在基类中并从中继承。无论如何,该类是一个模板,但有许多不依赖于模板参数的方法这一事实已经表明您将内容放在一个更好地属于单独类中的单个类中。
相关文章:
- 避免在C++中重复子类定义
- 如何避免在仅标头库中C++类/变量重定义
- 避免模板类中的重定义错误
- 如何避免自定义 STL 向量类的智能指针 delete[] 异常?
- 避免在静态常量类上定义但不使用
- 避免对仅在源文件中定义的类发出弱 vtable 警告
- C 模板专业化 - 避免重新定义
- 如何避免具有aligned_storage和多态性的未定义行为
- 如何避免在头文件中定义整个模板类
- 如何修复生成文件以正确包含 -lcrypto 以避免链接器错误:未定义对"EVP_CIPHER_CTX_new"的引用
- 通常如何避免重定义警告?
- 使用C ,我不断获得我似乎无法避免的可变错误的重新定义
- 避免在C 中使用未定义的对象
- 如果两个静态库包含 pugixml objs,如何避免与 pugixml 的“已定义”链接错误
- 如何避免基类的名称与制造商的寄存器定义名称相同
- 避免使用几乎相同的类定义的宏
- 定义专用模板类构造函数时避免重复
- C 包括.cpp:避免多个定义错误
- 如何在使用 std::make_tuple 时避免构造函数的未定义执行顺序
- 使用来自外部类的枚举来避免在 .proto 中定义