0
このような他の質問がありましたが、私の場合はこれらの質問の回答のすべてを行っていますが、未定義の参照エラーが発生します。ここでmain.cpp
次のとおりです。ここで別ファイルで定義されているメンバー関数への未定義の参照
#include "mainHeader.hpp"
int main() {
Matrix2D<int> matrix2(3,3);
matrix2(2,2) = 99; // produces an error
return 0;
}
はmainHeader.hpp
です:
#ifndef _MAINHEADER_HPP
#define _MAINHEADER_HPP
#include <iostream>
#include <vector>
template <class T>
class Matrix2D {
private:
std::vector< std::vector<T> > matrix;
public:
/* Constructors */
Matrix2D(unsigned int numberOfRows = 1, unsigned int numberOfColumns = 1) : matrix(std::vector< std::vector<T> >(numberOfRows, std::vector<T>(numberOfColumns))) {}
/* Operator overloads */
T & operator() (unsigned int, unsigned int);
};
#endif // _MAINHEADER_HPP
最後に、ここにmatrixClass.cpp
です:
#include "mainHeader.hpp"
// Overload the() operator
template <class T>
T & Matrix2D<T>::operator() (unsigned int row, unsigned int column) {
return matrix[row][column];
}
私は(Linuxのミント64ビット上)g++ -std=c++11 -Wall -g main.cpp matrixClass.cpp -o output
でコンパイルが、私は得ますエラー:
/tmp/ccoSx71n.o: In function `main':
/home/.../main.cpp:7: undefined reference to `Matrix2D<int>::oper
ator()(unsigned int, unsigned int)'
collect2: error: ld returned 1 exit status
問題が何か分かりません。助けてください。ありがとうございました!
十分な評判を得た時点で、重複してフラグを立てるか適切なコメントを付けてください。応答は間違った反応です。 –