Eigene Operatoren definieren [gelöst: unmöglich]
-
v schrieb:
und << vielleicht mit c++0x gar nicht mehr nötig wäre
was hat das mit c++0x zu tun? gibts da iwas neues im bereich der op-überladung bzw der streams? oO
-
unskilled schrieb:
v schrieb:
und << vielleicht mit c++0x gar nicht mehr nötig wäre
was hat das mit c++0x zu tun? gibts da iwas neues im bereich der op-überladung bzw der streams? oO
variadic templates und perfect forwarding und cout.print(a,"+",b,"=",a+b) müßte eigentlich recht schmerzfrei sein.
-
volkard schrieb:
Solche Überlegungen gibt es schon lange. Zum Beispiel http://www2.research.att.com/~bs/whitespace98.pdf
Aber es gibt noch keine Standard-Lösung.
Wenn irgend möglich verzichte auf den Wunsch.... It was therefore decided that the "Max Munch" resolution was unsuitable for large-scale programming. Instead, it was decided to by default limit identifiers to a single character:
int xy; // error: two-character identifier
This may seems Draconian at first . However, since we now have the full Unicode character set available, we don't actually need hard-to-read long names. Such long names only make code obscure by causing unpleasantly long lines and unnatural line breaks. Multi-character names are a relic of languages that
relied heavily on global name and encouraged overly-large scopes.

MfG SideWinder
-
SideWinder schrieb:

Der Grinskopf bekommt eins auf die Fresse? Lieber die Smilies vertauschen...
-
Ach ja, das alte Whitespace-Overloading Prank-Paper...

-
ok, dann bleibe ich eben doch bei funktionen

danke an alle,
andi01.
-
andi01 schrieb:
und ich weiß dass std::vector nicht der mathematische vektor ist, aber er eignet sich gut wenn man vorher nicht weiß wieviele einträge der mathematische vektor haben wird^^
Er eignet sich aber nicht, um davon öffentlich zu erben.
Ist zar ein anderes Thema, aber Deine Klasse sollte wenn einen std::vector 'haben' (nicht so tun als wär sie ein std::vector).
Allerdings weiß ich auch nicht ob es Sinn macht, mathematische Vektoren mit unterschiedlichen Dimensionen den gleichen Typ haben zu lassen. A x B macht keinen Sinn, wenn A eine höhere Dimension hat als B, muss man also immer zur Laufzeit prüfen.
Würde also eher machentemplate<typename T, size_t Dimension> class Vector{ std::array<T, Dimension> elements; /* ... */ };template<typename T, size_t Dim> T DotProduct(const Vector<T, Dim>& a, const Vector<T, Dim>& b) { for(size_t n = 0; n < Dim; ++n) result += a[n] + b[n]; return result; }
-
Für mathematische Vektoren dynamischer Grösse könnte man sich auch das relativ unbekannte Klassentemplate
std::valarrayanschauen. Aber sicher nicht davon erben!
-
Ich kann mich nur Nexus anschließen.
Die template klasse valarray die ist für mathematische vektor operationen.
-
In Haskell und OCaml man beliebige Operatoren definieren...