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' являются переменными. В моей функции-члене compute мне нужно выбрать тип (A, B и т. Д.), Основанный на значениях from и to. Единственный способ, которым я знаю, как сделать то, что мне нужно, - это использовать операторы switch, но в моем случае это очень утомительно, и я бы хотел этого избежать. Есть ли способ преобразовать строку ошибки в выражение-константу?