我正在学习 C++,目前遇到类模板的奇怪问题。这是我的头文件:
#ifndef VECTOR_H
#define VECTOR_H
#include <iostream>
#include <list>
using namespace std;
template <int n>
class Vector {
public:
list<float> coords;
Vector();
Vector(list<float> ncoords);
};
template <int n>
Vector<n>::Vector() {
coords.assign(n, 0.0);
}
#endif
这是我的 .cpp 文件:
#include "vector.h"
#include <list>
using std::ostream;
using namespace std;
template <int n>
Vector<n>::Vector(list<float> ncoords): coords {ncoords}{}
如果我这样做,一切都很好Vector<2> vector;
但是如果我尝试链接器会出错
Vector<20> vector2 { list<float>{} };
错误信息
未定义对 `Vector<20>::Vector(std::list >)' 的引用
问题是 - 我该如何解决这个问题?