0

私は 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 >)' への未定義参照

問題は、この問題をどのように解決できるかです。

4

1 に答える 1

2

テンプレートは、ヘッダー ファイル内に実装する必要があります。これは、リンクの仕組みによるものです。ここで徹底的な回答を注意深く読んでください。そして、次回は尋ねる前に検索してください。

于 2013-03-17T20:15:42.723 に答える