我有一个非常简单的矩阵类,其中包含以下构造函数:
template <typename Type>
SimpleMatrix<Type>::SimpleMatrix(const int &rows, const int &cols, const Type &val) {
for (int i = 0; i < rows; i++) {
vector<Type> col_vec(cols, val);
mat.push_back(col_vec);
}
}
简单,如果我尝试通过执行以下操作从main.cpp调用它:
SimpleMatrix<double> matrix(1,1,0.5);
编译器抛出众所周知的错误:
Undefined symbols for architecture x86_64:
"Matrix::SimpleMatrix<double>::SimpleMatrix(int const&, int const&, double const&)", referenced from:
_main in main.o
"Matrix::SimpleMatrix<double>::~SimpleMatrix()", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
在这种情况下,使用重载构造函数的方式是不是?我开始认为这是一个红鲱鱼,我的XCode正在播放!