我有一个矩阵类,我想打印到不同的矩阵类型(int,float,double)不同的矩阵到终端。我想实现这一点:如果矩阵类型,如果float
或double
,打印矩阵使用printf("%.3f ",matrix[i][j])
成员专业化的模板类为组类?
int
,打印矩阵使用printf("%d ",matrix[i][j])
- ,抛出一个错误
以下是我所拥有的相关部分:
...
template <class T>
class Matrix2D {
private:
std::vector< std::vector<T> > matrix;
public:
...
void print() const; // print the whole matrix
}
...
template <class T>
void Matrix2D<T>::print() const {
// throw an error
}
template <>
void Matrix2D<int>::print() const {
// print matrix using printf("%d ",matrix[i][j])
}
template <>
void Matrix2D<float,double>::print() const {
// print matrix using printf("%.3f ",matrix[i][j])
}
但使用Matrix2D<float,double>
给我错误信息error: wrong number of template arguments (2, should be 1)
。但是,我希望float
和double
型矩阵具有共同的print()
函数(不希望两次复制相同的东西)。达到此目的最简单的方法是什么?谢谢!
这是我落得这样做吧。这是一个轻量级解决方案,避免了额外的库。我可以将大部分的显示功能写入一块,并调用此重载打印功能,从而最大限度地减少额外的代码写入。 –