“术语不评估为采用0参数的函数”错误

时间:2016-03-19 12:35:14

标签: c++

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

有人能给我一些见解吗?据我所知,它没有解决带有一个参数的函数。

1 个答案:

答案 0 :(得分:3)

此:

this()(*mijnVector);

正在尝试调用this指针。你想要调用它所指向的对象。正确的语法是:

(*this)(*mijnVector);

或者,如果你感到特别罗嗦:

this->operator()(*mijnVector);