2016-04-30 5 views
5

In C++ eine Variable zu zwei anderen binden, wir eine Variable durch Verweis wie definieren:C++ über Referenzen

int foo = 3; 
int &bar = foo; 

Dann wird der folgende Code

cout << foo << " " << bar; 

druckt

3 3 

, weil der "Wert" des Balkens durch Verweis (&) an den Wert von foo gebunden ist. Ich frage mich, gibt es eine Möglichkeit, den Wert von "bar" an zwei Variablen zu binden? Sagen wir, ich habe drei Variablen: Geddy, Neil und Alex, und ich möchte, dass neil alex + geddy immer gleich ist. Gibt es einen Weg zwei schreiben etwas wie:

int alex = 4; 
int geddy = 5; 
int &neil = alex + geddy; 

So dass Neil 9 zurück? Wenn ich dann alex zu 7 ändere, wird neil 12 zurückgeben?

+0

C++ funktioniert nicht so, wie Sie wollen. 'neil' ändert seinen Wert nach der Zuweisung nicht dynamisch, wenn' alex' oder 'geddy' geändert werden. Es gibt keine Syntax, um dies zu ermöglichen. – drescherjm

+0

Ist das nicht nur eine Funktion? Außerdem, was würde passieren, wenn du etwas "neil" zuordnen würdest? – Kateract

+0

Ich denke "kompletter Unsinn" ist ein bisschen hart. Ich habe ein "&" verlegt. Wie auch immer, es ist jetzt behoben. – awwsmm

Antwort

6

Nein, nicht wirklich. Sie könnten jedoch eine Funktion oder Funktor machen:

int alex = 4; 
int geddy = 5; 

auto neil = [&]() { return alex + geddy; }; 
std::cout << neil() << "\n"; 
+0

Nun, das ist bedauerlich. Aber wenn das das Beste ist, was ich habe, muss ich herausfinden, wie ich damit arbeiten soll. Vielen Dank! – awwsmm

+2

@AndrewWatson: Sie können den Aufruf '()' als Konvertierungsoperator für ein Objekt des Klassentyps automatisieren, damit Sie die gewünschte Schreibweise erhalten. Aber Dinge implizit zu machen ist oft eine Ungood Idea ™, vor allem wenn es die Ausführlichkeit nicht entfernt. In 'std :: cout << neil() <<" \ n "' kann ein Leser sehen, was das bedeutet, dass es einen Funktionsaufruf gibt, aber in 'std :: cout << neil <<" \ n "' Der Anruf ist nicht ersichtlich. Das heißt, es klingt, als ob Sie wirklich * Tabellenkalkulation * Funktionalität, nicht ein C++ Programm wollen. Eine Tabelle kann eine gute * ad hoc * Lösung für ein praktisches Problem sein. –