Da gibt es zwei Methoden. Die eine ist, dass du einfach Pointer an die Klassen versendest, die auf Klasse 1 zugreifen müssen.
Die andere, die ich in vielen Fällen persönlich schöner finde, sind Singletons.
Angenommen, du benötigst nur eine Instanz von Klasse 1 (das ist bei "closedevice" anzunehmen) gleichzeitig, dann kannst du die Klasse so deklarieren:
Code:
class Klasse1
{
public:
~Klasse1();
static Klasse1 *Klasse1::get()
{
static Klasse1 klasse1;
return &klasse1;
};
private:
Klasse1();
};
Dadurch kann zu jeder Zeit nur eine Instanz der Klasse existieren, der Pointer darauf kann jederzeit über get() abgefragt werden.
Nachteil der Sache ist, dass Konstruktoren/Destruktoren nicht wirklich funktionieren, da die Klasse solange existiert, wie das Programm läuft, bzw bei Programmstart initialisiert wird, du benötigst also zum (de)initialisieren zwei Funktionen.