Я пытаюсь зачитать элементы из 3D-матрицы, созданной с использованием динамического контейнера std C++ для векторов. Ниже, как я инициализировать свою матрицу:Матрица из вектора std в вектор от Eigen/Dense
typedef vector<vector<vector<ClassA> > > matrix3D;
В моем классе под названием "ClassA", у меня есть следующие открытые члены:
double a, b, c;
Затем в моем основном файле я заполняю матрицу:
double varA=M_PI; double varB=varA; double varC=varA;
matrix3D[i][j][k].a = varA;
matrix3D[i][j][k].b = varB;
matrix3D[i][j][k].c = varC;
Теперь, когда я прочитал двойник в вектор, созданных с помощью Эйгена/Густой библиотеку, типа вектора становится матрицей:
Vector3d vectorEigen;
vectorEigen << matrix3D[i][j][k].a, matrix3D[i][j][k].b, matrix3D[i][j][k].c;
и vectorEigen
становится переменной типа Eigen::Matrix<double, 3,1,0,3,1>
Кто-нибудь знает, что я пропустил здесь?
C++ - это статически типизированный язык. Переменная не будет «становиться» другим типом. –
Я предполагаю, что вопрос о типе 'vectorEigen' больше не является реальной проблемой. Может быть, вы боретесь с какой-то другой проблемой? На самом деле вам не нужна 'vectorEigen << matrix3D [i] [j] [k] .a << matrix3D [i] [j] [k] .b << matrix3D [i] [j] [k]. c; 'вместо' vectorEigen << matrix3D [i] [j] [k] .a, matrix3D [i] [j] [k] .b, matrix3D [i] [j] [k] .c; ' – WhiteViking
'vectorEigen << matrix3D [i] [j] [k] .a << matrix3D [i] [j] [k] .b << matrix3D [i] [j] [k] .c;' дает мне ошибка, к сожалению :( Проблема возникает, когда я вызываю функцию, которая принимает входной параметр Vector3d. Подстановка 'vectorEigen' в качестве входного параметра функции заставляет компилятор жаловаться. Причиной является функция со входом типа 'Eigen :: Matrix' не определено. –
bull