C ++ sendet einen beliebigen Argumenttyp an eine Funktion

9

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!

    
ali 05.01.2013, 20:10
quelle

3 Antworten

7

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:

%Vor%

Dies macht einen Laufzeitschalter überflüssig.

    
Charles Salvia 05.01.2013, 20:11
quelle
13

Sie sollten Vorlagen

verwenden %Vor%     
Caesar 05.01.2013 20:12
quelle
5

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).

    
Oliver Charlesworth 05.01.2013 20:12
quelle

Tags und Links