模板类跨库如何导出使用, 给出c++示例
时间: 2023-12-13 20:06:01 浏览: 31
假设我们有一个名为`MyClass`的模板类,声明如下:
```cpp
template<typename T>
class MyClass {
public:
MyClass(T data);
void printData();
private:
T mData;
};
```
我们需要将这个模板类导出到另一个库中使用。以下是一个示例:
1. 在源库中,将`MyClass`模板类保存到一个头文件中,例如`myclass.h`,并将头文件和源文件编译成库文件,例如`mylib.lib`。
```cpp
// myclass.h
#pragma once
template<typename T>
class MyClass {
public:
MyClass(T data);
void printData();
private:
T mData;
};
// myclass.cpp
#include "myclass.h"
template<typename T>
MyClass<T>::MyClass(T data) : mData(data) {}
template<typename T>
void MyClass<T>::printData() {
std::cout << mData << std::endl;
}
```
2. 在目标库中,将`myclass.h`和`mylib.lib`文件复制到相应目录下。
3. 在目标库中的代码中,实例化`MyClass`模板类并调用它的方法。
```cpp
#include "myclass.h"
int main() {
// 实例化一个MyClass对象,并调用printData方法
MyClass<int> myClass(123);
myClass.printData();
return 0;
}
```
注意,如果在源库中使用了其他外部库,你需要确保这些库在目标库中已经存在。另外,需要保证源库和目标库的版本兼容性,否则可能会出现编译错误等问题。