2016-04-27 11 views
-1

Ich versuche, generischen Baum zu schreiben. Ich fügte Funktionsobjekt hinzu, um zwischen den Werten der Scheitelpunkte zu vergleichen. aber ich habe Problem:generisches Objekt und Funktionsobjekt

die relevanten Teile der Header-Datei:

template <typename T,typename Func> 

.....

void addData(T dataIn,Func condition){ 

die wichtigsten:

#include "gentree.h" 
class compare_int { 
public: 
    int operator()(int a,int b){ 
     if (a==b) return 0; 
     else if (a>b) return -1; 
     else return 1; 

    } 
}; 
using namespace std; 

int main() { 
    genTree<int,compare_int> new_tr(5); 
    new_tr.addData(3,compare_int); 
    return 0; 
} 

bekomme ich Fehler für diese Linie:

new_tr.addData(3,compare_int); 

die Fehler sind: "erwarteten primären Ausdruck vor ')' Token" und "ungültige Argumente '" irgendwelche Ideen?

+0

BTW, Sie wollen wahrscheinlich 'Func' in Konstruktor sein, nicht in' addData' Argument. – Jarod42

Antwort

0

Sie übergeben Typ als Parameter anstelle von Objekt. Sie haben eine Aufgabe der compare_int Typ erstellen und weitergeben möchten:

compare_int comparator; 
new_tr.addData(3, comparator); 
1

In dem Ausdruck new_tr.addData(3,compare_int); 3 ist ein Wert, aber compare_int ist ein Typ. Sie können einen Typ nicht als Parameter an eine Funktion übergeben.

können Sie entweder erstellen Sie einen separaten Wert, oder ein temporäres Objekt vergleichen passieren, wie

new_tr.addData(3,compare_int()); 
Verwandte Themen