Klassen, Arrays und Referenzen
-
Hallo,
ich bin recht neu in cpp unterwegs und versuche gerade eine Klasse für Vektorrechnung zu schreiben. Auf die x, y und z Werte des Vektors möchte ich sowohl über ein Array, als auch über die Referenzen x, y und z zugreifen.Ich habe bereits Referenzen und Zeiger probiert zu verwenden.
class Vector { public: double xxvalues[3]; double &x = xxvalues[0];
Es erscheint immer der Fehler:
/Users/aa/Desktop/vector.cpp:9: error: 'Vector::xxvalues' cannot appear in a constant-expression /Users/aa/Desktop/vector.cpp:9: error: an array reference cannot appear in a constant-expression /Users/aa/Desktop/vector.cpp:9: error: ISO C++ forbids initialization of member 'x' /Users/aa/Desktop/vector.cpp:9: error: making 'x' static /Users/aa/Desktop/vector.cpp:9: error: invalid in-class initialization of static data member of non-integral type 'double&'
Vielen Dank schon einmal.
-
double &x = xxvalues[0];
Kannst du in Klassendefinitionen so nicht schreiben. Initialisierungen werden mit einer gleichnamigen Initialisierungsliste im Konstruktor durchgeführt:
Vector()://Doppelpunkt leitet Initialisierungsliste ein x(xxvalues[0]) { //....
Außerdem, für Vektor/Matrizen Rechnungen gibt es
std::valarray
& co. aus der Standardbibliothek. Für Arrays könntest du auch STL-Container (hier bspw.std::vector
) verwenden. Geschwindigkeit zählt doch hier nicht.
-
Kompilier mit -std=c++11 bzw -std=c++0x.
-
Kellerautomat schrieb:
Kompilier mit -std=c++11 bzw -std=c++0x.
Das feature ist mir bekannt, mein GCC (und ich bin mir sicher, sein Compiler ebenfalls) unterstützen non-static data member initializers (noch) nicht.
-
Vielen Dank,
das mit der angepassten Initialisierungsliste hat geholfen.C++ ist halt doch kein Java
-
Zum Glück.