Objekt in anderer Unit nutzen
-
Hallo,
ganz dumme Frage wahrscheinlich.
Dennoch stelle ich sie euch mal.
Habe ein Objekt in einer cpp-Datei erstellt.
Die Klasse des Objekts bfindet sich wiederum in einer anderen Unit (cpp-Datei + h-Datei).
Möchte dieses Objekt aber auch in einer dritten cpp-Datei nutzen.
Was muss ich tun?
-
Hm, ein wenig konfus. Meinst Du mit „Units“ Kompiliereinheiten? In diesem Fall sollte es gehen, das Objekt einfach in der gewünschten cpp-Datei zu deklarieren (also mit 'extern'). Bei globalen Objekten gibt es aber unter Umständen Probleme mit der Initialisierungsreihenfolge, daher solltest Du Dir anschauen ob es nicht besser wäre, aus dem Objekt eine Singleton-Klasse zu machen oder zumindest statt des globalen Objekts eine globale Funktion mit statischer Variablen zur Verfügung zu stellen.
-
Wie schon von Konrad angedeutet: der Name "Unit" existiert nicht in C++. Daher ist wichtig was du meinst.
Wenn es sich im gleichen Projekt befindet (hiervon gehe ich aus) gibt es mehrere Möglichkeiten es zu lösen:
a) Sofern überhaupt nur eine Objektinstanz benötigt wird => Singleton
b) Sofern an sich mehrere Objekte von der Klasse existieren können:
- Globales Objekt (sehr unsauber)
- Methodenübergabe (per Referenz)
- Eine Art Objektcache der dir auf Anfrage ein Objekt über eine Kennung (z.B. Id) liefert, dabei aber Referenzen oder z.B. shared_ptr auf die entsprechenden Objekte zurückgibt.
...Was möchtest du mit dem Objekt den machen? Bzw. beschreibe es ein wenig genauer.
cu André
-
Erstmal danke für eure schnelle Hilfe.
Ich erläutere es nochmal besser.1. Es gibt mehr als ein Objekt dieser Klasse.
2. Viel unterschiedliche cpp-Dateien und auch andere Klassen benötigen die jeweiligen Objekte in Funktionen um Werte zu filtern.
3. Eine vererbung der Klasse ist nicht notwendig und macht auch kein Sinn, wo die cpp-Datei keine Klasse beinhaltet. (Nur Hilfsfunktionen für das Programm die dieses Objekt nutzen)
4. Die Globaliesierung des Objekts wäre natürlich schon sehr schön, dennoch ist es nciht sehr sauber. Frage ist, ist es in der Regel Schlimm ein Objekt global anzulegen, wenn es eh von allen möglichen cpp-Datein aus genutzt wird.
5. Referenzierung von Objekten???Bitte um Hilfe und Vorschläge.
Vielleicht hat ja mal jemand ein Programmauszug.
-
Wenn das nur Hilfs Objekte sind, die nicht länger leben müssen und deren erzeugung nicht sehr teuer ist, dann würde ich überall dort wo benötigt eines instanzieren.
Simon
-
Hatte ich auch schon drüber nach gedacht. Leider müssen diese solange leben wie das Programm auch genutzt wird. Danke trotzdem. Vielleicht kann mir noch jemand einen Tip geben.
-
Was für eine Aufgabe haben denn diese Objekte? Und sind sie nur innerhalb einer Funktion relevant oder werden sie auch zwischen verschiedenen Funktionen übergeben? (im letzteren Fall: bekommt auch der Anwender (also fremde CPP-Dateien) die Objekte direkt in die Hand?)