Как преобразовать const Eigen :: VectorXcf в Eigen :: VectorXcf? - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу преобразовать указатель в const VectorXcf в VectorXcf в собственной библиотеке.Я пытался const_cast<VectorXcf>, но это не сработало.Ниже приводится журнал ошибок:

error: invalid conversion from 'const Vector2cf* {aka const
Eigen::Matrix<std::complex<float>, 2, 1>*}' to 'Eigen::Vector2cf* {aka
Eigen::Matrix<std::complex<float>, 2, 1>*}' [-fpermissive]

1 Ответ

0 голосов
/ 04 декабря 2018

Можете ли вы показать, что именно не работает для вас?У меня есть MCVE, который работает как в Visual Studio 2015, так и gcc 6.3.0 (mingw), скомпилированный с -Wall:

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;

int main()
{
    typedef VectorXcf T;

    T mat(10);

    const T& matConstRef = mat;
    T* nc = const_cast<T*>(&matConstRef);
    nc->setConstant(T::Scalar(3.4));
    std::cout << *nc << "\n\n";
    Map<T> map = Map<T>(const_cast<T::Scalar*>(matConstRef.data()), matConstRef.rows(), matConstRef.cols());
    map << 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
    std::cout << map << "\n\n";
    return 0;
}

. Он компилируется без каких-либо предупреждений и дает ожидаемый результат.

...