Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 没有重载函数接受2个参数(函子)_C++_Templates - Fatal编程技术网

C++ 没有重载函数接受2个参数(函子)

C++ 没有重载函数接受2个参数(函子),c++,templates,C++,Templates,我在尝试为堆数据结构实现自定义比较器支持时遇到了一个问题 以下是我希望它看起来的样子: template <class T, class Pred = std::less<T>> class ConcurrentPriorityQueue { private: template <class T> class Node { private: T d

我在尝试为堆数据结构实现自定义比较器支持时遇到了一个问题 以下是我希望它看起来的样子:

    template <class T, class Pred = std::less<T>>
    class ConcurrentPriorityQueue {
    private:

        template <class T>
        class Node
        {
        private:
            T data;
            bool operator < (const Node<T>& t) {
            return Pred(data, t.data);
         }
            };
     };
模板
类ConcurrentPriorityQueue{
私人:
模板
类节点
{
私人:
T数据;
布尔运算符<(常数节点和t){
返回Pred(数据,t.data);
}
};
};
这是我想用的比较函子:

struct comp {
            bool operator () (const std::pair<int, fn_type> &p1,
                const std::pair<int, fn_type> &p2) const{
                return p1.first < p2.first;
            }
        };
struct comp{
布尔运算符()(常数std::pair&p1,
常量标准::成对和p2)常量{
返回p1.first

ConcurrentPriorityQueue FQUE;
对我来说,一切看起来都很正常,但我会出错

错误2错误C2661:“ThreadPool::comp::comp”:没有重载函数接受2个参数c:\users\usr\documents\visual studio 2013\projects\secondtask\queue.hpp。你能帮我解决这个问题吗


Pred
指的是一种类型,而不是该类型的实例


当前,当执行
Pred(data,t.data)
时,您试图调用类型为
Pred
的构造函数,首先必须创建
Pred
的实例,以便能够对其调用匹配的
操作符()(…)

下面的示例创建类型为
Pred
的临时实例,然后调用其
操作符()


Pred
指的是一种类型,而不是该类型的实例


当前,当执行
Pred(data,t.data)
时,您试图调用类型为
Pred
的构造函数,首先必须创建
Pred
的实例,以便能够对其调用匹配的
操作符()(…)

下面的示例创建类型为
Pred
的临时实例,然后调用其
操作符()


Pred
指的是一种类型,而不是该类型的实例


当前,当执行
Pred(data,t.data)
时,您试图调用类型为
Pred
的构造函数,首先必须创建
Pred
的实例,以便能够对其调用匹配的
操作符()(…)

下面的示例创建类型为
Pred
的临时实例,然后调用其
操作符()


Pred
指的是一种类型,而不是该类型的实例


当前,当执行
Pred(data,t.data)
时,您试图调用类型为
Pred
的构造函数,首先必须创建
Pred
的实例,以便能够对其调用匹配的
操作符()(…)

下面的示例创建类型为
Pred
的临时实例,然后调用其
操作符()

Mvsc2013识别
(Pred())(数据,t.data)作为演员阵容。然而,我明白了你的想法,
Pred()(数据,t.data)
工作得很好。Mvsc2013识别
(Pred())(数据,t.data)作为演员阵容。然而,我明白了你的想法,
Pred()(数据,t.data)
工作得很好。Mvsc2013识别
(Pred())(数据,t.data)作为演员阵容。然而,我明白了你的想法,
Pred()(数据,t.data)
工作得很好。Mvsc2013识别
(Pred())(数据,t.data)作为演员阵容。然而,我明白了你的想法,
Pred()(data,t.data)
工作得很好。
ConcurrentPriorityQueue<std::pair<int, fn_type>, comp> fqueue;
        return Pred () (data, t.data); // 1) create a temporary instance of `Pred`
                                       // 2) call its operator() with `data` and `t.data`