[C++] Variabler Objektname

Allo

Lt. Commander
Registriert
Feb. 2004
Beiträge
1.064
Schönen guten Morgen,

Ich suche schon ewig und 3 Tage nach der Lösung meines Problems, welches sich wie folgt zusammensetzt:

Ich möchte einen variablem Objekname für meine Objekte, jedoch weiß ich überhaupt nicht wie man das macht. Ich habe schon nachstehendes versucht:

string varobjname;
varobjname = „allo“;

Bigobjekt varobjname;

Da sagt mir der Compiler aber das varobjname schon als Variable definiert wurde (was ich ja wollte :rolleyes: ).

Wie kann ich den Objekten variable Namen geben?
 
garnicht. variablen namen(und ein object ist ja nichts anderes) werden vom compiler direkt in die speicher addressen übersetzt. anders als bei php ist es also nicht möglich variable namen für objecte zu benutzen.

das währe aber auch ziemlich langsam. am besten du gibst mal ein beispiel wo du das brauchst, das lässt sich in der regel mit pointern viel besser lösen.
 
Das was Du da geschrieben hast geht so natürlich nicht, aber mit Hilfe des Präprozessors ließe sich das realisieren:

Code:
#DEFINE VAROBJNAME allo

Bigobjekt VAROBJNAME;

Das nutzt aber nur wenn Dir irgendwann ein besserer Name für Dein Objekt einfällt, dann brauchst Du das "allo" nur durch "neuernamefürallo" ersetzen, anstatt den ganzen Code zu durchforsten. Die Suchen & Ersetzen-Funktion einer vernünftigen IDE nimmt Dir das aber auch gerne ab.

Gruß
Morgoth
 
Warum willst du das machen? Den User interessiert doch nicht, wie deine Objekte lauten :confused_alt:
 
wenn ich zum beispiel eine Autodatenbank/Autospiel erstelle kann ich mir gut vorstellen einen variablen objektnamen zu gebrauchen.
wenn ich jetzt ein array habe mit den werten "BMW", "Fiat", "VW"... will ich für jedes auto im array ein objekt erstellen. Da das Array jedoch unterschiedlich groß sein kann (eventuell kommt noch "Audi", "Mercedes" hinzu), kann ich keine festen objektnamen erstellen.
ich hoffe es wird jetzt klarer.
 
Klingt für mich irgendwie danach, als ob du ein assoziativen Vektor haben willlst. Der kann auch nachträglich wachsen und auf die Elemente kann per Schlüssel, beispielsweise einem String ("Audi") zugegriffen werden.

Ich habe die selber noch nicht verwendet, also bevor ich da jetzt falsche Vermutungen darüber anstelle, geb ich dir zwei Suchworte für Google: map STL
 
wiegesagt kommt das vermutlich von php oder anderen scirptsprache wo sowas durchaus üblich ist. der preprocessor lässt sich für sowas auchnicht missbrauchen, schließlich sind die namen dann immernochnicht zur laufzeit variable.

allerdings ist sowas wirklich nur ein schlechter hack. für variable größen nutzt man pointer. in der regel wirst du aber eh schon was passendes in der stl finden, dann musst du dich nich selber mit den pointern rumschlagen.

in c++ würde man also aufjedenfall die objecte(oder pointer darauf) direkt ein ein array/vector packen. und nicht irgendwelche strings um sie dann wieder zu finden...
 
Am besten du nutzt eine Liste, in der du die einzelnen Objekte ablegst. Vergebe in jedem Objekt einen eindeutigen Namen (z.B. Audi VW oder sonstiges). Das hat den Vorteil, dass die Liste beliebig erweiterbar ist und auch die Objekte unterschiedlich sein können.
 
Allo schrieb:
Schönen guten Morgen,
...
Wie kann ich den Objekten variable Namen geben?

Hallo, ich denke in einer sprache wie c++ haben variable (!!) objektnamen nichts zu suchen. Ich wüsste auch nicht wofür man ein objekt per name in c++ ansprechen sollte - jedenfalls nicht in diesem sinne, dafür kann man dann die STL map benutzen... aber auch das macht erst bei einer grösseren anzahl benannter objekte sinn ;-)

Für variable objekt namen ist Python zu empfehlen!

schoen gruss, znephf
 
Zurück
Oben