オペレーターを機能させようとしましたが、エラーがたくさん発生しました。
私のヘッダーファイル
template <unsigned short n>
class Vector {
public:
std::vector<float> coords;
Vector();
Vector(std::vector<float> crds);
friend std::ostream& operator <<(std::ostream& out, const Vector& v);
};
template <unsigned short n>
Vector<n>::Vector() {
coords.assign(n, 0.0);
}
template <unsigned short n>
std::ostream& operator<<(std::ostream& out, const Vector<n>& v) {
out << "(" << v.coords[1] << " - " << v.coords[2] << ")";
return out;
}
テストファイル
#include <iostream>
#include "vector.h"
using namespace std;
int main() {
Vector<3> toomas;
cout << toomas;
}
エラー:
C:\ CodeBlocks \ kool \ praks3 \ vector.h | 14 |警告:フレンド宣言'std :: ostream&operator <<(std :: ostream&、const Vector&)'は非テンプレート関数を宣言します|
C:\ CodeBlocks \ kool \ praks3 \ vector.h | 14 |注:(これが意図したものでない場合は、関数テンプレートが既に宣言されていることを確認し、ここで関数名の後に<>を追加してください)|
obj \ Debug \ test.o||関数`main'内:|
C:\ CodeBlocks \ kool \ praks3 \ test.cpp | 8 | `operator <<(std :: ostream&、Vector <(unsigned short)3> const&)'への未定義の参照|