Ich benutze Eigen-Bibliothek in C++ und stieß auf ein seltsames Problem.Explizite Typ-Deklaration Vs automatisch in Eigen-Ausdrücke in C++
Eigen::VectorXd someV(){
Eigen::VectorXd a(3);
a(1)=1.2;
a(2)=2.3;
a(0)=3.2;
return a;
}
int main(){
auto c=2.*someV();
std::cout<<c;
return 0;
}
gibt nichts zurück.
int main(){
auto c=someV();
c *= 2.;
std::cout<<c;
return 0;
}
gibt das gewünschte Ergebnis zurück. Beachten Sie außerdem, dass die explizite Typdeklaration das Problem löst.
int main(){
Eigen::VectorXd c=2.*someV();
std::cout<<c;
return 0;
}
Warum ist die Verwendung von Auto im ersten Fall falsch?
Ich vermute, dass dies etwas mit der Interaktion von Güssen und "Auto" zu tun hat. Könnten Sie versuchen, nicht "auto" zu verwenden, sondern explizit mit den Rückgabetypen und sehen, ob das Verhalten anders ist? – TriskalJM
Welche Art von Werten erhalten Sie und welche Art erwarten Sie? – comingstorm
Bitte können Sie eine SSCCE (http://sscce.org/) hinzufügen, so dass wir nicht erraten müssen, was die Eingaben sind, wie das Ergebnis anders ist als erwartet, usw. – NPE