Optionale Parameter auslassen
-
Hallo,
ich bin gerade am c++ lernen und bin auf folgendes Problem gestoßen:
Beim Aufruf einer Methode mit zwei optionalen Parametern möchte ich nur den zweiten Parameter übergeben, für den ersten Parameter soll der Default-Wert übernommen werden. Wäre die Situation umgekehrt, würde ich einfach den 2. Parameter ganz weglassen, aber so geht das ja nicht. Wenn ich aber beim Methodenaufruf einfach den ersten Parameter auslasse, also
Methode( ,Paramter2);bekomme ich den Fehler, dass eine "primary expression" fehlt.
Ich bekomme einfach nicht raus, wie das geht. Langsam frage ich mich schon, ob es überhaupt geht.
Weiß jemand von euch Rat?
lg
Sandra
-
Nein, geht nicht.
-
Du kannst das Problem mit Boost.Parameter umschiffen, aber das lohnt sich imho nur für mehr als 2 Parameter.
-
also ich hab mir jetzt nicht boost.paramter angeschaut, aber eine möglichkeit wäre ja das du dir eine klasse baust welches die beiden parameter enthält und dort dann default werte für die variablen deklarierst und nur die setzt welche du brauchst
template< class T, class V > class param{ param(); //default constructor, hier kannste die default werte eintragen setFirst( T para ); setSecond( V para ); T getFirst(); V getSecond(); private: T firstparam; V secondparam; }ich bin noch nicht so vertraut mit templates, aber hier ist meine idee dazu.
so kannst du deiner methode einfach ein objekt übergeben welches auf jedenfall initilisiert ist mit deinen default werten. wenn du aber andere brauchst kannst du sie einfach mit den set methoden überschreiben.ist keine komplett ausgereifte lösung aber mal ein denkanstoß.