Lokale Variable aus Konstruktor heraus global machen

Hallo zusammen,

ich habe eine kleine Library geschrieben mit der ich 7 Segmentanzeigen über einen MAX 7219 ansteuern kann. Der Library übergebe ich im Konstruktor die Anzahl der einzelnen 7-Segment Digits:

Max7Segment::Max7Segment (int _data, int _load, int _clock, int _numberOfDigits) {
data = _data;
load = _load;
clock = _clock;
numberOfDigits = _numberOfDigits;
}

Die Variable "numberOfDigits" möchte ich nach dem Aufruf des Konstruktors global für andere Methoden verfügbar machen. Kann mir jemand sagen ob und wenn ja wie das geht?

Vielen Dank,

Schwanzlurch

Vielleicht per getter Methode?

Mmmmhhhh, kann dir nicht ganz folgen.

int getNumberOfDigits()
{
   return _numberOfDigits;
}

Das kann nicht funktionieren da die dem Konstruktor übergebene Variable _numberOfDigits nur in dessen Geltungsbereich erreichbar ist. Das ist ja mein Problem. Ich möchte sie aus dem Konstruktor heraus global machen um sie dann aus einer anderen Methode heraus anzusprechen.

Oops. Ich meinte natürlich numberOfDigits

Du musst nichts "aus dem Konstruktor heraus global machen". Du erstellst einfach eine Zugriffsmethode.

Etwas schöner geht der Konstruktor mit einer Initialisierungsliste:

Max7Segment::Max7Segment (int data, int load, int clock, int numberOfDigits) 
: data(data), load(load), clock(clock), numberOfDigits(numberOfDigits)
{
}

Dann braucht man nicht Variablen mit unterschiedlichen Namen und kommt da nicht durcheinander. Der Compiler findet dann selbst heraus dass man die Parameter den globalen Variablen zuweisen möchte. Außerdem geschieht dass ohne dass sie erst mal mit Default-Werten initialisiert werden

Ich hätte eigentlich selbst drauf kommen können: Einfach im header File die Variable als pblic und nicht private deklarieren. Danke für deine Hilfe.

Einfach im header File die Variable als pblic und nicht private deklarieren

OOP scheinst du noch nicht verstanden zu haben

Der Nachteil darin die Variable public zu machen ist dass man sie dann auch überall ändern kann. Mit Getter- und Setter-Methoden hast du dagegen Kontrolle darüber ob und wie man sie ändern kann