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];
}
我編譯g++ -std=c++11 -Wall -g main.cpp matrixClass.cpp -o output
(在Linux Mint的64位),但我得到錯誤:
/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
我不明白是什麼問題,請幫忙。謝謝!
標記爲重複或在您有足夠的信譽後立即給出相應的評論。回答是錯誤的反應。 –