Hier geht es: Ich möchte eine Void-Funktion erstellen, die zwei bekannte Arten von Werten erhalten wird und eine andere, die alles Mögliche sein kann. Der Code würde wie folgt sein:C++ senden Sie einen beliebigen Argumenttyp an eine Funktion
void change_settings(string element, short setting, ??? value) {
switch (setting) {
case ST_NAME:
// Cast value to string or char* and change element.name
break;
case ST_AMOUNT:
// Cast value to integer and change element.amount
break;
case ST_ENABLED:
// Cast value to boolean and change element.enabled
break;
}
}
I tryied den Wertes des Typen const void*
zu machen, aber ich erhalte eine Fehlermeldung (cast from ‘const void*’ to ‘short int’ loses precision
), weil ich diese gerade tat short name = (short)value
, die einigen verrückten verzweifelten Versuch sein muss, in der Hoffnung, Glück zu haben . Nun, ich weiß nicht, ob es eine Möglichkeit gibt, dies zu tun, den Zeiger irgendeiner Variablen zu übergeben und ihn dann zu dem zu machen, was er ist (ich kenne den Typ der zu erwartenden Variablen je nach Fall.) Wie würde ich das machen? ? Dank
verwenden, das ist wahr, aber an diesem Punkt, warum der Schalter Fall nicht eine andere Funktion für jede Einstellung erstellen und vermeiden. – Caesar
Ja - es macht die Variable 'setting' unnötig. –
Lass es uns versuchen. Natürlich kann ich auch switch und setting verwenden, wenn ich verschiedene Fälle habe, wo ich einen int-Wert benötige, zum Beispiel – ali