我需要做这样的事情:
template <typename Matrix_xx>
bool ProcessMatrix<Matrix_xx>::function1(Matrix_xx a) {
int x, y;
// ... some code here ... //
if (Matrix_xx == Matrix_1D) {
a->readFromFile(x);
} else if (Matrix_xx == Matrix_2D) {
a->readFromFile(x, y);
} // ...
}
即,调用不同的函数取决于模板参数。上面的代码无法编译,因为只有 Matrix_1D::readFromFile(int x) 和 Matrix_2D::readFromFile(int x, int y)。我不想将 function1 拆分为两个不同的函数,因为会有很多重复的代码。还有其他方法吗?