Ich mache einige Stapel, in denen ich diese Art von Vergleich in einer Funktion verwenden muss. Aber ich bin stecken geblieben, da ich nicht weiß, wie der Prototyp dafür aussehen soll.Template-Klasse und Überladung '=='
Ich habe folgende Zeile in einer Funktion.
template <class T>
void function1(T i)
{
if(i == 'a')
//do something
}
Ich frage mich, wie der Überladungsprototyp dafür aussehen sollte?
EDIT weiß nicht, ob es sich lohnt auf jeden Fall zu erwähnen, ist das, was ich Vorlage so weit
bool Stack<T>::operator==(char c) const
{
cout << c << endl; // just some test
}
Keine Notwendigkeit, zu kommentieren, wie diese Funktion funktioniert versucht haben, wie ich es noch nicht fertig sind. Dieser Teil wird kompiliert, jedoch an dem Teil, an dem ich diese Funktion zum ersten Mal anrufe, ist im Stack :: push (T i). Der Compiler wird sich beschweren, dass es keine passende Funktion dafür gibt.
error: no match for 'operator==' in 'i == '#''
Zeigen Sie uns, was Sie bisher versucht habe: Ich kann nicht sagen, was du bist fragen von der Frage, aber ein Beispiel könnte klären. –
Ihre Frage ist nicht klar. Ihre Template-Funktion ist in Ordnung, wenn die 'if'-Anweisung abgeschlossen ist. Aber es geht davon aus, dass man "i == 'a'' vergleichen kann. Ist die Frage, wie man das für einen Typ "T" möglich macht, oder wie man diese Zeile verallgemeinert, um kein 'char'-Literal zu verwenden? – aschepler
@aschepler: Ich möchte so machen, dass ich Typ T mit einem Charakter vergleichen kann, seit irgendeinem Punkt, wenn ich dieses Programm führe, muss ich diesen Vergleich machen. – starcorn