Zitat von
Ko_Onrad
Kannste das mal bitte genauer erläutern? Verstehe Ich nämlich nicht..
Wenn man nur einen int in eine Funktion hinein transportieren will
Code:
void foo(int a)
{
cout << a;
}
Wenn man einen int in einer Funktion bearbeiten will
Code:
void foo(int& a)
{
cout << a;
a++;
}
Wenn man einen int optional zur Verfügung stellen möchte
Code:
void foo(int* a = 0)
{
if (a != 0) *a = 5;
}
Letzteres kann man auch lösen, wenn man zwei foo() macht, eine mit und eine ohne int
Code:
int foo()
{
}
int foo(int& a)
{
a = 5;
}
Optional wird manchmal benutzt, wenn mehrere Parameter optional sind und es sonst zu viele einzelen Versionen werden, zb
Code:
bool parseXML(const string& xmlstring, string* error = 0, int* errorLine = 0, int* errorColumns = 0)
D.h. der Benutzer der Funktion kann bei Bedarf zwei int Pointer angeben und so eine genauere Information über einen Fehler und den Ort eines Fehlers erhalten.
Man könnte auch wie oben beschrieben folgendes machen
Code:
bool parseXML(const string& xmlstring);
bool parseXML(const string& xmlstring, string& error);
bool parseXML(const string& xmlstring, string& error, int& errorLine);
bool parseXML(const string& xmlstring, string& error, int& errorLine, int& errorColumns);
Wobei man dann natürlich die ersten drei als inline Wrapper um die vierte Funktion implementieren kann, also zB
Code:
bool parseXML(const string& xmlstring)
{
string error;
int line;
int col;
return parseXML(xmlstring, error, line, col);
}
Ciao,
_
Lesezeichen