具有类定义的头文件Sort.hpp:
ionic serve
具有功能实现的源文件Sort.cpp:
#ifndef TEST_SORT_HPP
#define TEST_SORT_HPP
#include <vector>
using namespace std;
class Sort {
public:
template <typename T>
static void mergeSort(vector<T>& arr);
};
#endif //TEST_SORT_HPP
此结构不适用于reasons stated in this answer。如参考答案中所述,如果我不想将实现直接包含在头文件中,则有多种方法可以解决此问题。
但是,这些解决方案对我不起作用:
如果在头文件的末尾(在#include "Sort.hpp"
template <typename T>
void Sort::mergeSort(vector<T> &arr) {
// the implementation is irrelevant at the moment
}
之前)添加#include "Sort.cpp"
,则会收到错误消息:#endif
我事先不知道排序使用的所有类型,因此无法在源文件的末尾明确声明它们。
我也无法从Sort.cpp文件中删除redefinition of 'static void Sort::mergeSort(std::vector<T>&)'
,因为那样#include "Sort.hpp"
...正在创建具有未知类型(无限制)的类模板吗?
...在知道将使用哪种特定类型的地方创建类模板?