Wertübergabe (CallByReference)

anmae

Erfahrenes Mitglied
Hallo

hier mal eine absolute Deppenfrage die mir schon ein weng peinlich is, aber cih steh irgendwie grad aufm Schlauch.

Habe eine Funktion im Parameter res den Rückgabewert zurückgeben soll:
Code:
BOOL CConfig::GroupAllowsSubGroups( bool res) {res = 1; return(TRUE);}
Aufruf:
bool res = 0;
if(GroupsAllowsSubGroups(res))
...

res ist nach der Funktion immernoch 0.

Wie muß das ganze aussehen damit das Klappt

thx schonmal
 
Da musst du mit Referenzen arbeiten:

BOOL CConfig::GroupAllowsSubGroups( bool& res)
{
res = 1;
return(TRUE);
}

Dadurch IST das res innerhalb der Funktion dieselbe Variable wie ausserhalb.
 
und wie läuft das ganze bei character arrays?

so gehts nich:
bool CToolbox::InsertInSection(char& Section[0xffff])
{}
 
Hi.

Was willst du denn überhaupt machen? Willst du irgendwie den Wert des C-Strings ändern?

Dann brauchst du da keine Referenz zu übergeben, denn ein Array ist lediglich ein Pointer auf den Beginn des Arrays, du hast also sowieso vollen Zugriff auf das Array.

Wenn du allerdings den Pointer ändern willst - also die Adresse auf die deine char-Array Variable zeigt, dann geht es so:
Code:
void blah(char*& ref) {
  ref = new char[20];
}

Du mußt natürlich darauf achten das dabei kein Speicherleck entsteht, d.h. du mußt bevor du die Funktion mit einer Variable aufrufst sicherstellen das du noch eine Referenz auf die Speicherstelle behälst bzw. vorher den Speicher freigeben.

Das was du vorher deklariert hast, war übrigens ein Array mit 0xffff Elementen von Referenzen auf char. Was du meintest war das:
Code:
char (&Section)[0xffff]

Außerdem verbietet der ISO C++ Standard die Zuweisung von Arrays. Z.B.
Code:
char c1[20];
char c2[20];

c1 = c2; // Fehler.

Gruß
 
Zurück