Ich habe eine Klasseninstanz, auf die einige andere Klassen zugreifen müssen.Alternativen zu statisch und global in C++?
- Es wäre ziemlich umständlich, die Instanz immer über die Baukette zu führen.
- Ich habe versucht, globale Variable zu vermeiden, da Leute dazu neigen, dagegen zu beraten.
- Ich dachte, ich erkläre diese Instanz ein statisches Element einer Klasse und sind dann diese Klasse, um die Instanz zugreifen, aber das funktioniert nicht, entweder
error: calling a private constructor of class 'Foo'
Um das Problem weiter in die angeben Kontext des QGraphicsView Frameworks: Ich möchte QGraphicsItems hinzufügen, die von einer Controller-Klasse (die Elemente verwalten) zu QGraphicsScene hinzugefügt werden, was ein Mitglied meiner QMainWindow-Klasse ist (aber ich beharre nicht auf diesem Detail).
Ich verbringe viel Zeit mit der Suche im Internet, aber ich bin ziemlich neu und bin hier irgendwie festgefahren. Ich schätze jeden Anreiz dafür, wie der beste Weg zur Lösung des Dilemmas wäre.
statisch in einer Klasse hat einige Nachteile mit globalen Variablen. Das sauberste Ding ist der "umständliche" Parameter-Passing – deviantfan
Sie sollten sich über das Singleton-Muster informieren: http://en.wikipedia.org/wiki/Singleton_pattern – Caduchon
@Caduchon ... außer Singletons sind aus den gleichen Gründen nicht beliebt (Immerhin, das übliche Singleton basiert auf statischen Klassenvariablen). Einige lesen: http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons etc.etc. – deviantfan