Hier geht es: Ich möchte eine Void-Funktion erstellen, die zwei bekannte Arten von Werten und eine andere erhält, die alles Mögliche sein kann. Der Code wäre wie folgt:
%Vor% Ich habe versucht, den Wert const void*
zu machen, aber ich bekomme einen Fehler ( cast from ‘const void*’ to ‘short int’ loses precision
), weil ich gerade das getan habe: short name = (short)value
, was eine verrückte verzweifelte Verhandlung 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 sie dann zu dem zu machen, was sie ist (ich kenne den Typ der zu erwartenden Variablen in Abhängigkeit von dem jeweiligen Fall).
Wie würde ich das tun? Danke!
Da Sie im Voraus alle potenziellen Typen von value
zu kennen scheinen und je nach Typ ein anderes Verhalten wünschen, können Sie einfach eine Reihe von Funktionsüberladungen schreiben:
Dies macht einen Laufzeitschalter überflüssig.
Angenommen, Sie sprechen von einem Laufzeitwechsel (im Gegensatz zur Kompilierungszeit, in diesem Fall sind Templates wahrscheinlich die Antwort):
Sie könnten eine abweichende Klasse in Betracht ziehen (z. B. boost::variant
) oder vielleicht Polymorphie verwenden (d. h. eine Vererbungshierarchie definieren und virtuelle Funktionen, um die spezifischen Verhaltensweisen zu implementieren).