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コードの行があります。const式へのC++変数
setFrom()およびsetTo()は、GUIウィジェットによるユーザーの選択に基づいて呼び出される関数です。私の問題の根源は、「from」と「to」は変数であるということです。私の計算メンバー関数では、 'from'と 'to'の値に基づいて型(A、Bなど)を選択する必要があります。私がする必要があることをする方法を知っている唯一の方法は、switch文を使うことですが、それは私の場合は非常に面倒です。私は避けたいのです。エラーラインを定数式に変換する方法はありますか?
いいえ、ごめんなさい、助けになりません。マップを埋めることはまだまだ多くの作業です。私は22のテンプレートクラスを持っていますが、すべてのfrom/combosのために、私は400以上のコードブロックで終わります。 – Arlen