【发布时间】:2011-06-02 04:12:02
【问题描述】:
template <typename Real>
class A{ };
template <typename Real>
class B{ };
//... a few dozen more similar template classes
class Computer{
public slots:
void setFrom(int from){ from_ = from; }
void setTo(int to){ to_ = to; }
private:
template <int F, int T> void compute(){
using boost::fusion::vector;
using boost::fusion::at_c;
vector<A<float>, B<float>, ...> v;
at_c<F>(v).operator()(at_c<T>(v)); //error; needs to be const-expression.
};
//...
computer.compute(1, 3); // ok
computer.compute(var1, var2); // var1, var2 cannot appear in a constant-expression
这个问题与 Qt 无关,但在我的示例中有一行 Qt 代码。
setFrom() 和 setTo() 是基于用户选择通过 GUI 小部件调用的函数。我的问题的根源是'from'和'to'是变量。在我的计算成员函数中,我需要根据 'from' 和 'to' 的值选择一个类型(A、B 等)。我知道如何做我需要做的唯一方法是使用 switch 语句,但在我的情况下这非常乏味,我想避免。无论如何将错误行转换为常量表达式?
【问题讨论】: