2016-07-16 10 views
0

Ich habe eine Klasse mit 2 Variablen. Sie sind öffentlich.C++ Klassenmitglied Variablen Interaktion

Ich möchte sie auf eine Weise initialisieren, dass man immer ein Vielfaches der anderen ist, und wenn ich das erste aktualisiere, wird das andere automatisch aktualisieren.

In meiner Klassendeklaration:

`

public: 

Int variable1; 
Int variable2 = (10*variable1); 

` Wenn ich variable1 aktualisieren, ich will überprüfen, was der aktualisierte Wert von variable2 ist, und ein paar Sachen zu tun, basierend auf diesem Ergebnis.

variable1++; 
If (variable2 > 10) 
{ 
//Do stuff 
} 

So weiß ich, dass ich durch die Aktualisierung der zweiten Variable dieses Problem umgehen können, aber ich weiß, dass es einen Weg geben muss er zweite Variable ständig zu haben, aktualisieren. Das Problem ist eindeutig in der Deklaration, aber "const", oder "statisch", wird nicht helfen ... Ich denke nicht. Wenn ich einen beredten Weg finden könnte, um das Problem zu formulieren, bin ich mir sicher, dass ich die Antwort googlen könnte. Aber ich kann nicht!

Antwort

2

Sie können es einfach nicht so machen. Der richtige Weg ist durch Kapselung.

Im folgenden Beispiel rufen Sie einfach die Getter auf, um den Wert zu erhalten (inlined = so schnell wie ein direkter Zugriff) und Sie können nur variable1 ändern. Sie könnten eine set_variable2 Methode hinzufügen, aber es hätte wenig Sinn.

public: 
    inline int get_variable1() const { return variable1; } 
    inline int get_variable2() const { return variable1*10; } 
    inline void set_variable1(int new_value) { variable1=new_value; } 

private: 
int variable1; 
+0

Oder in einem allgemeineren Fall 'set_variable1() verwenden würden, 'könnte' variable1' modifizieren und dann eine 'private' Funktion aufrufen, die alle notwendigen Arbeiten erledigt, um' variable2' zu aktualisieren. –

+0

Ok! Wenn es nicht möglich ist, ist das in Ordnung. Grundsätzlich möchte ich überprüfen, dass eine Kombination von Variablen Variable2 nicht über einen bestimmten Betrag hinausnimmt. Ich werde lernen, es richtig zu formatieren. Danke allen für ihre Hilfe! –

1

Einfach nicht tun ... erstellen Sie nur eine Variable und multiplizieren Sie sie bei Bedarf.

1

wäre der beste Weg 1 ein Vielfaches Variable nur zu verwenden, wenn Sie Variable 2

für Ihre if-Anweisung verwenden

if((variable1 * 10) > 10){ 
    //do stuff 
}