![]() |
[C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüberl.
Guten abend. Ich versuche gerade eine einfache Matrix-Klasse in C++ zu implementieren. Dabei möchte ich zunächst einige statische Methoden schreiben, die Objekte auf bestimmte ARt und Weise erzeugen, initialisieren und zurückgeben. Das ganze soll, falls das möglich ist, mit den &-Referenzen geschehen, da man dann beim Zugriff ja nicht zwischen Zeiger und dem eigentlichen Objekt unterscheiden muss.
Ich könnte auch damit leben, die Objekte per Zeiger anzusprechen. Dort taucht aber das Problem auf, dass ich für den Zugriff auf die Elemente der Matrix den ()-Operator überladen habe und das aber nicht bei Zeigern funktioniert (zumindest weiß ich nicht wie). Lange Rede, kurzer Sinn: Ich habe bisher nur Tutorials gefunden, in denen diese Probleme tangiert werden, aber keins, welches sich speziell mit meiner Problematik beschäftigt. Falls jemand also so etwas kennt, wäre es sehr nett, den Link hier zu posten ;) Was in dem Tutorial u.a. erklärt werden sollte ist, wie man folgenden Delphi-Code in C++ unter Verwendung von Referenzen ausdrückt:
Delphi-Quellcode:
class TBlabla
public class function GetSpecialObject(type: Integer): TBlaBla; end; function TBlabla.GetSpecialObject(type: Integer): TBlaBla; begin //hier irgendein Objekt erstellen oder auch ein vorhandes nehmen //z.B. Result := TBlabla.Create(-1, 1, type); end; |
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Zitat:
Zitat:
However, folgendes sollte zumindest kompilieren:
Code:
Ungetestet, ich weiß also nicht, ob er soetwas schluckt, aber auf jeden Fall das delete nicht vergessen ;-)
class CSomeClass
{ public: static CSomeClass& GetSpecialObject(type: int); }; CSomeClass& CSomeClass::GetSpecialObject(type: int) { CSomeClass *temp = new CSomeClass(parameters, for, constructor); return (*temp); } Schlecht ist es IMHO trotzdem ;-) |
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Zitat:
Eine Matrixklasse habe ich schonmal geschrieben. Muß sie nur mal raussuchen. Evtl. wird's morgen, ansonsten erst am Freitag. |
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Zitat:
Damit kann ich so auf ELemente meiner Matrix zugreifen:
Code:
Was aber halt nicht geht ist sowas:
Matrix m(3);
m(0,1) := 56.45;
Code:
Und warum ist so eine statische Methode schlechter Stil? Konkret möchte ich das dafür einsetzen, Translations- oder Spiegelungsmatrizen zu erzeugen. Mit zwei, drei statischen Methoden dafür ist das wesentlich besser als wenn ich den Code dafür 100 mal ins Programm schreibe.
Matrix* m = new Matrix(3);
m(0,1) := 56.45; Und wollte ich ein Singleton verwenden, muss ich das ja so machen, oder? @Olli: Danke schon mal. |
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Zitat:
Zitat:
|
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Zitat:
|
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Referenzen sollte man da benutzen, wo sie sinnvoll sind. Das ist der Punkt.
Könntest du vielleicht erstmal spezifizieren welche Operatoren du mit welcher Funktion überladen willst und welche Operationen auf Matrizen du überhaupt haben willst? Ich kann nur das Buch von Buzzi-Ferraris "Scientific C++" empfehlen. Mag zwar etwas älter sein, ist aber hervorragend geeignet. |
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Zitat:
Code:
geht immer noch nicht?
Matrix* m = new Matrix(3);
(*m)(0,1) = 56.45; Zitat:
Edit: Wieso ist da eigentlich immer jemand schneller als ich? Und warum kommt nie der rote Kasten? Und überhaupt, warum merke ich das immer erst 10 Minuten später? Fragen über Fragen... aber 42 kann's diesmal nicht sein... |
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Liste der Anhänge anzeigen (Anzahl: 1)
War doch nur eine Vektorklasse, obwohl ich meine, ich hätte schon eine eigene Matrixklasse implementiert - aber die finde ich aktuell nicht. Vektorklasse siehe Anhang.
Ansonsten zu allen Fragen: ![]() "Scientific C++: Building Numerical Libraries the Object-Oriented Way" von ![]() |
Re: [C++] Tutorial für mit Zeiger vs. Referenzen, Operatorüb
Zitat:
Die (*m)(0,1) - Variante geht, ist aber hässlich. Naja, aber ist akzeptabel im Notfall. Zitat:
Ack. Ich hatte dich so verstanden, dass es generell schlechter Stil sei, dass eine statische Methode Objekte zurückliefert, sei es als referenz, als Zeiger oder als was-auch-immer. Naja, so wies aussieht, werd ich mich damit abfinden, den Zeiger manuell zu derefenzieren. Danke aber für die Literatur und die Vektor-Klasse, Olli. Operatoren, die ich überladen möchte, sind halt dieser Subscript-Operator und Operatoren zum Multiplizieren. Ob ich sonst noch was brauch, weiß ich noch nicht. Aber auf jeden Fall großen Dank schon mal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz