私はテンプレート化されたMatrix
クラスを書いており、宣言はに、Matrix.cpp
に実装しています。私はテストファイルtestMatrix.cpp
を持っています。g ++リンカエラー:未定義参照
ファイルの先頭に次のようになります。
Matrix.h
#ifndef _MATRIX
#define _MATRIX
#include <string.h>
// Definition of Matrix class
#endif
Matrix.cpp
#include "Matrix.h"
#include <iostream>
using namespace std;
// ...Implementation
testMatrix.cpp
#include "Matrix.h"
#include <iostream>
using namespace std;
int main() {
cout << "Test constructors...\n";
cout << "Unitialized matrix (4, 4):\n";
Matrix<int> mi1 (4, 4);
mi1.print();
cout << "4*4 matrix initialized to -1:\n";
Matrix<int> mi2 (4, 4, -1);
mi2.print();
cout << "Constructing mi3 as a copy of mi2:\n";
Matrix<int> mi3 (mi2);
mi3.print();
cout << "Assigning mi3 to mi1:\n";
mi1 = mi3;
mi1.print();
return 0;
}
私がコンパイルに使用するコマンドライン:
g++ -Wall -lrt -g Matrix.cpp testMatrix.cpp -o testMatrix
は、コンパイラは私にエラーを与え続け:
/tmp/ccofoNiO.o: In function `main':
/afs/ir/users/t/i/tianxind/practice/Essential_C++/testMatrix.cpp:9: undefined reference to `Matrix<int>::print() const'
collect2: ld returned 1 exit status
誰もがここで何が悪かったのかのアイデアを持っていますか?本当にありがとう!
'print()'関数を定義しましたか? – Mysticial