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);
};
};
当我尝试调用先前定义的operator()时,我收到以下错误:
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
有人能给我一些见解吗?据我所知,它没有解决带有一个参数的函数。
答案 0 :(得分:3)
此:
this()(*mijnVector);
正在尝试调用this
指针。你想要调用它所指向的对象。正确的语法是:
(*this)(*mijnVector);
或者,如果你感到特别罗嗦:
this->operator()(*mijnVector);