2016-03-19 10 views
0
template <typename T> 
    class Sorteermethode { 
    public: 
     virtual void operator()(vector<T> & v) const = 0; 

     void meet(int kortste, int langste, ostream& os) { 
      Sortvector<T> * mijnVector = new Sortvector<T>(kortste); 
      Chrono * chrono = new Chrono; 
      while (kortste <= langste) { 
       (*mijnVector).vul_range(); 
       (*chrono).start(); 
       this()(*mijnVector); 
       (*chrono).stop(); 
       printf("Lengte: %d tijd: %f", kortste, (*chrono).tijd()); 
       kortste *= 10; 
       (*mijnVector).resize(kortste); 
      } 
      free(chrono); 
      free(mijnVector); 
     }; 
    }; 

Wenn ich versuche, die vorher definierten Operator() aufzurufen ich die folgende Fehlermeldung erhalten:„Ausdruck ergibt keine Funktion unter 0 Argumente“ Fehler

Severity Code Description Project File Line 
Error C2064 term does not evaluate to a function taking 0 arguments Algoritmen1 c:\users\user\documents\visual studio 2015\projects\algoritmen1\algoritmen1\sorteermethode.h 40 

Könnte jemand geben Sie mir einen kleinen Einblick auf Dies? Soweit ich sehen kann, löst es sich mit einem Parameter nicht auf die Funktion auf. Diese

+0

verfassen [Minimal, vollständig und prüfbare Beispiel] (http://stackoverflow.com/help/ mcve), bitte. – MikeCAT

+1

Randnotiz: Verwenden Sie 'delete' für Objekte, die mit' new', nicht 'free' erstellt wurden. –

Antwort

3

:

this()(*mijnVector); 

versucht, die this Zeiger zu nennen. Sie möchten das Objekt aufrufen, auf das es zeigt. Die korrekte Syntax ist:

(*this)(*mijnVector); 

Oder, wenn Sie besonders wortreich Gefühl sind:

this->operator()(*mijnVector); 
Verwandte Themen