Я не эксперт в c ++, и у меня проблема с приведением std::vector< std::vector<double> > my_data
к void *f_data
и переосмыслением этого приведения.
В основном мне нужно преобразовать my_data
:
std::vector<double> point1(2);
point1[0] = 0.06; point1[1] = 2.07;
std::vector<double> point2(2);
point2[0] = 1.01; point2[1] = 0.02;
std::vector< std::vector<double> > my_data;
my_data.push_back(point1);
my_data.push_back(point2);
, чтобы она соответствовала функции opt.set_min_objective(vfunc vf, void *f_data)
, поступающей из пакета NLopt в c ++.
На основании этого поста , я пытаюсь выполнить следующее но это не работает:
auto *test = static_cast<void*>(my_data.data());
std::vector< std::vector<double> > *this_data = reinterpret_cast<std::vector< std::vector<double> >*>(test);
, так как при отладке я получаю следующую ошибку:
this_data=Cannot access memory at address 0x3faeb851eb851eb8
Я также пробовал это, но это тоже не работает:
auto test = static_cast<void*>(my_data.data());
std::vector< std::vector<double> > *this_data = reinterpret_cast<std::vector< std::vector<double> >*>(test);
Любая помощь будет отличной. Спасибо!