Ich verwende MatrixXd Matrizen von Eigen auf meinem Code, und an einem bestimmten Punkt brauche ich ein 3D. Da Eigen nicht über tridimensional Typen Matrix, da es nur für lineare Algebra optimiert, stattdessen einen Zeiger-Array des MatrixXd Typ Ich schaffe:Array von Zeigern zu Eigen Matrizen
Eigen::MatrixXd *CVM =new Eigen::MatrixXd[100];
for (int i = 0; i < 100; i++){
CVM[i]= Eigen::MatrixXd::Zero(5,5);
}
jedoch später muss ich auf diesem Array die Werte Acess und für das ich tue so etwas wie:
for (int k = 0; k < 100; k++){
Eigen::MatrixXd* b=&CVM[k];
for (int i = 0; i < 5; i++){
for (int j = 0; j < 5; j++){
b->coeff(i,j)=47;
}
}
}
Als b
ist ein Zeiger und nicht die MatrixXd
selbst, b(i,j)
offensichtlich nicht funktionieren würde, so stattdessen ich die coeff()
Methode verwende, jedoch bekomme ich folgende Fehler:
error: assignment of read-only location ‘b->Eigen::Matrix<double, -1, -1>::<anonymous>.Eigen::PlainObjectBase<Derived>::coeff<Eigen::Matrix<double, -1, -1> >(((Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1> >::Index)i), ((Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1> >::Index)j))’
EDIT: Ausgabe hinzugefügt
cout << b << endl;
cout << CVM[47] << endl;
0x1c34b00
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
'C++'? [tag: C++] fehlt –
Können Sie zeigen, was "b" ist? Außerdem haben Sie kein Array von Zeigern. Sie haben ein dynamisch zugewiesenes Array mit Objekten. – juanchopanza
Ich denke, es gibt einen Tippfehler, zweite Zeile 'a' sollte 'b' sein? – ggael