Sehr geehrtes Forum,
Ich wollte etwas erfragen, und zwar schreibe ich mir ja gerade
die X-Games-Library, und wollte wissen, ob ich funktionen, mit kleinen
Unterschieden immer so deklarieren muss oder nicht, ihr werdet die Frage sicherlich an diesem
Beispiel verstehen :
Ich habe eine Funktion die mir eine LaserLinie zeichnet, doch diese Funktion, soll
auf jeden Fall die Position der Beiden Linienpunkte haben + die Mantel-Farbe (was das ist braucht ihr eig. nicht zu wissen) des Lasers,
und optional noch eine Farbe, nämlich die des Lasers, doch wie kann ich das anstellen ?
|
C-/C++-Quelltext
|
1
|
void drawLaserLine(sf::RenderWindow* window,int x1,int y1,int x2,int y2,int width,sf::Color& c,sf::Color& c = sf::Color::White);
|
Ihr seht hier ja, dass ich dem letzten Parameter schon einmal ein Default gesetzt habe, nämlich sf::Color::White.
Ich möchte die Funktion manchmal aufrufen, und zwar nachfolgendem Muster :
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
sf::Color laser = sf::Color::Blue;
sf::Color laser2 = sf::Color::Red;
// Mal so
drawLaser(....,laser);
// Mal so
drawLaser(...,laser,laser2);
|
Das geht auch, doch wenn ich beim Funktionsaufruf eine Farbe definiere, also so :
|
C-/C++-Quelltext
|
1
|
drawLaser(...,sf::Color::Blue);
|
Dann meckert der Compiler, dass die Funktion keine const sf::Color& haben will, sondern einfach nur sf::Color&.
Muss ich da jetzt für jedes Muster extra ein Funktionsrumpf anlegen? Was ist denn eigentlich auch noch mit dem Default, das ist gesetzt habe, ich kann ja keiner const sf::Color& im Funktionskopf ein Default Wert geben, was soll ich also machen, muss ich da extra viele Funktionsrumpfe angeben, oder hättet ihr da ne idee, was ich machen kann?
M.f.G: Developer_X
PS: Ihr werdet euch wundern warum ich oben im Titel 8 geschrieben habe, das liegt daran, dass ich es die Funktion auch einmal gibt, die aber keine Koordinaten in Integern bekommen will, sondern in Points, eine Struktur die ich auch noch definiere.