Warum gibt es kein std::tr1::array<T> operator +=
-
Nexus schrieb:
Was spricht in diesem Fall für private Vererbung?
Werden STD-Adapter nicht auch
privateVererbt?
-
Wonach du zu suchen scheinst ist so etwas wie Eigen oder Boost.uBLAS (wenn die Vektoren groß sind).
oparator schrieb:
hustbaer schrieb:
oparator schrieb:
Ist dieses Array synchronisiert?
Was soll synchronisiert in dem Zusammenhang bedeuten?
Thread Safe.
Nein. Darum musst du dich kümmern.
-
oparator schrieb:
hustbaer schrieb:
oparator schrieb:
Ist dieses Array synchronisiert?
Was soll synchronisiert in dem Zusammenhang bedeuten?
Thread Safe.
Soll das ein Scherz sein?
Wieso sollten da irgendwas thread-safe sein?
Ist denn irgendwas in der SCL thread-safe - mal abgesehen von globalen Funktionen und atomic/thread/mutex/condition_variable?
-
Dank eurer Hilfe habe bin ich gut vorangekommen und verwende nun das valarray.
An einer Stelle ist mir ein Fehler? aufgefallen den ich nicht so deuten kann.
Hier ist der Code:
double operator [](const unsigned int &b) { if(b == 0) { return (this)[0][0]; } else if(b == 1) { return (this)[0][1]; } assert(false); return 0.0; } double distance(position2d &b) const { return hypot((*this)[0]-b[0],(*this)[1]-b[1]); }Ist es richtig dass der Compiler mir nicht meckert dass ich bei operator keine const & zurückgebe? in der distance funktion meckert er nämlich über den const qualifier wenn ich auf b[0] zugreifen möchte.
-
oparator schrieb:
in der distance funktion meckert er nämlich über den const qualifier wenn ich auf b[0] zugreifen möchte.
Wenn ich es so verwende
[cpp]
double distance(const position3d &b) const
[/cpp]
meckert der compiler.Error: no operator "[]" matches these operands
-
Klar meckert er, weil dein operator [] nicht auf const Objekte aufgerufen werden kann.
//double operator [](const unsigned int &b) double operator [](unsigned int index) const { // ...
-
hustbaer schrieb:
Klar meckert er, weil dein operator [] nicht auf const Objekte aufgerufen werden kann.
//double operator [](const unsigned int &b) double operator [](unsigned int index) const { // ...Also braucht man zwei gleiche Operatoren mit const und nicht const einmal für den Zugriff einmal fürs schreiben?
double operator [](unsigned int index) constDamit kann ich doch nicht
test[0] = 2.0;??
-
man macht normalerweise folgendes:
double & operator[](unsigned int x) {} const double & operator(unsigned int x) const {}mit dem ersten greift man drauf zu und mit dem zweiten hat man eine lvalue referenz, die man auch belegen kann
-
richtig, da brauchst du zwei Operatoren - der konstante liefert einen double, der "normale" eine Referenz (damit die Zuweisung auch funktioniert).
-
CStoll schrieb:
richtig, da brauchst du zwei Operatoren - der konstante liefert einen double, der "normale" eine Referenz (damit die Zuweisung auch funktioniert).
Danke an alle Helfenden.