【发布时间】:2014-07-26 01:21:16
【问题描述】:
我这里有这个问题,我不知道如何解决。我想要一个模板类,它接受一个整数作为模板参数并相应地为另一个类设置模板参数:
template <int T>
class Solver
{
public:
#if T <= 24
typedef MyMatrix<float> Matrix;
#else if T <= 53
typedef MyMatrix<double> Matrix;
#else
typedef MyMatrix<mpreal> Matrix;
#endif
Matrix create();
};
然后这样称呼它:
Solver<53>::Matrix m = Solver<53>::create();
我该如何做这样的事情?目前使用上面的代码,编译器抱怨它不知道“矩阵”,所以我不确定你是否可以在模板参数上使用预处理器。
【问题讨论】:
-
MyMatrix定义在哪里? -
在编译之前会评估预处理器条件,因此您现在尝试的将不起作用(就预处理器而言,未定义 T)。
-
MyMatrix 是一个在别处定义的简单矩阵类,并接受一个类型作为参数。
标签: c++ templates c-preprocessor