Следующий код:
#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» при двойной инициализации
a = Gcodi[p];
Советы?
Согласно официальному документу Вот,
RealForward
тип с перегруженным оператором присваивания, так что вы можете присвоить его с двойным ..
нравится делать
codi::RealForward a = 3.0;
противоположное направление, конечно, не определено,
вот почему вы не можете преобразовать напрямую Коди :: RealForward в двойник, просто выполнив:
double a = Gcodi[p];
но вы можете вызывать функции для этого, т.е.
double a = Gcodi[p].getGradient();
ОБНОВИТЬ:
тогда вы можете назначить объект RealForward с двойным, как при выполнении
double myDouble{3.3};
RealForward a = myDouble;
но не разрешено присваивать двойные значения непосредственно из REalForwad:
RealForward a = ...;
double myDouble = a; //not valid!
другие примеры
RealForward b = a * a; //this is ok because a * a is a double
Других решений пока нет …