3

次のコード:

#include <codi.hpp>
...
codi::RealForward Gcodi[l];
for (int p = 0; p < l; p++) 
{
     ...
     double a = Gcodi[p];
}

コンパイルエラーが表示されます:

nnBFAD.cpp: 関数 'void OptBF()' 内:

nnBFAD.cpp:156:25: エラー: 'codi::RealForward {aka codi::ActiveReal >}' を初期化 double で 'double' に変換できません

a = Gcodi[p];

ヒント?

4

2 に答える 2

1

公式ドキュメントhereに よるとRealForward 、は代入演算子がオーバーロードされた型であるため、double.. で代入できます。

することが好き

codi::RealForward a = 3.0;

もちろん、反対方向は定義されていません。

これが、次のようにするだけでcodi::RealForwardを double に直接変換できない理由です。

double a = Gcodi[p];

しかし、その上で関数を呼び出すことができます。つまり

double a = Gcodi[p].getGradient();

更新

次に、RealForward オブジェクトに double を割り当てることができます。

double myDouble{3.3};
RealForward a = myDouble;

ただし、REalForwad から double を直接割り当てることは正しくありません。

RealForward a = ...;
double myDouble = a; //not valid!

他の例

RealForward b = a * a; //this is ok because a * a is a double
于 2018-12-05T08:07:49.373 に答える