在.h中写了模板类(类中包含函数声明,但没有添加内容)后,想在.cpp中给类中的函数添加内容怎么写
时间: 2024-10-15 09:22:41 浏览: 25
在C++中,如果你在`.h`文件中声明了模板类及其成员函数,但在`.cpp`文件中想要为这些函数提供实现(即添加具体内容),你需要按照以下步骤操作:
1. **头文件** (`*.h`): 首先,在`.h`文件中,声明模板类和它的成员函数,但不需要给出函数的具体实现。例如:
```cpp
// MyClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
template <typename T>
class MyClass {
public:
// 函数声明
void myFunction(T arg);
};
#endif // MYCLASS_H
```
在这个例子中,`myFunction`是一个模板函数,它接受一个类型`T`的参数。
2. **源文件** (`*.cpp`): 然后,在`.cpp`文件中,你可以提供这些函数的实现。确保在`#include`了相应的头文件之后:
```cpp
// MyClass.cpp
#include "MyClass.h"
// 实现函数
template <typename T>
void MyClass<T>::myFunction(T arg) {
// 这里是你对arg的操作
// 例如,对于不同类型T的不同处理
std::cout << "Input of type: " << typeid(arg).name() << "\n";
}
```
这里,`<typename T>`确保了编译器知道你正在处理一个类型参数。然后,你只需替换`T`为你需要的特定类型即可,比如`int`, `std::string`, 等等。
3. **链接阶段**: 当你构建程序时,编译器会根据`.cpp`文件中提供的模板特化实例化这些函数。
阅读全文