2

classAが持っている:

static const double alias_var = classB::const_var;

次にclassB

static const double const_var = 1000.;

しかし、コンパイラは私に言い続けます:

'classB::const_var' は定数式には使用できません。

なぜだめですか?面白いことにclassB::const_var、 adoubleから anに変更するintと、エラーはなくなります。

最適化のためにこれらの変数をインライン化しました。浮動小数点を使用しても最適化が妨げられないことを願っています。

Ubuntu 64 ビット環境で GCC 5.4.0 を使用しています。私が Qt4 を使用しているという事実は、それとは何の関係もないと確信しています。

編集:私の最善の回避策は、次のようにすることですclassB:

static const int const_var_int = 1000;
static const double const var = const_var_int;

そして、classA(他のどこでも)const_var_int浮動小数点に割り当てます。エラーを取り除きます。それが目的を破っているのか、それとも他にどんな結果があるのか​​ はわかりません。

4

1 に答える 1