在c++中如何将模版类的成员函数放在.cpp中定义
时间: 2024-09-18 07:06:52 浏览: 56
在C++泛型编程中如何只特化类的某个成员函数
在 C++ 中,模板类的成员函数可以定义在头文件 (.h) 中声明,并在对应的 .cpp 文件中实现。这是因为模板类的实例化是在编译时期完成的,而这些实例化后的函数体(即模板实例)需要在编译阶段可见。这样做的好处是可以防止多次包含头文件导致的重复代码。
例如,在头文件 (template_class.h) 中:
```cpp
// template_class.h
#ifndef TEMPLATE_CLASS_H
#define TEMPLATE_CLASS_H
template <typename T>
class TemplateClass {
public:
// 成员函数声明
void doSomething(T value);
};
// 定义放在.cpp文件中
#include "template_class.cpp" // 这里只是为了示例,实际上不需要这么写
#endif // TEMPLATE_CLASS_H
```
然后在单独的 .cpp 文件 (template_class.cpp) 中实现该函数:
```cpp
// template_class.cpp
#include "template_class.h"
// 实现部分
template <typename T>
void TemplateClass<T>::doSomething(T value) {
// 具体操作...
}
```
在这个例子中,`TemplateClass` 的用户只需要包含 `template_class.h` 就能使用 `doSomething` 函数,无需关心其实现细节是否已经包含了。
阅读全文