Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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++ 调用C++;std::在结构指针向量上排序_C++_Sorting_Vector_Function Pointers - Fatal编程技术网

C++ 调用C++;std::在结构指针向量上排序

C++ 调用C++;std::在结构指针向量上排序,c++,sorting,vector,function-pointers,C++,Sorting,Vector,Function Pointers,*编辑以添加错误消息 VisualStudio的intellisense在指向我在程序前面定义的结构的指针向量上调用排序函数时,会对其进行红色标记 我实例化了一个指向比较方法的函数指针,并按如下方式调用sort: bool(*compareNodes)(nodePtr, nodePtr) = compNodes; sort(frontier.begin(), frontier.end(), compNodes); /* flags compnodes and sort; "cannot de

*编辑以添加错误消息

VisualStudio的intellisense在指向我在程序前面定义的结构的指针向量上调用排序函数时,会对其进行红色标记

我实例化了一个指向比较方法的函数指针,并按如下方式调用sort:

bool(*compareNodes)(nodePtr, nodePtr) = compNodes;

sort(frontier.begin(), frontier.end(), compNodes);

/* flags compnodes and sort; "cannot determine which instance of overloaded 
 * function "compNodes is intended" */
compNodes功能:

static bool compNodes(nodePtr Node1, nodePtr Node2){
    if (Node1->fValue != Node2->fValue)
        return (Node1->fValue < Node2->fValue);
    else
        return (Node1->ID > Node2->ID);
}
静态bool compNodes(nodePtr Node1、nodePtr Node2){
if(Node1->fValue!=Node2->fValue)
返回(Node1->fValuefValue);
其他的
返回(Node1->ID>Node2->ID);
}

胡乱猜测:
compNodes
过载。您很聪明地尝试使用
compareNodes
获取指向正确重载的指针,但实际上您没有在
std::sort()
中使用它。将行更改为:

sort(frontier.begin(), frontier.end(), compareNodes);

如果您的警告级别足够高,您会看到
compareNodes
当前未使用。

并且您关心Intellisense的功能,因为…?您有问题吗?是否有错误消息?请将错误消息添加到您的问题中。有时,IntelliSense是错误的,代码编译得很好。错误消息意味着您的程序中有多个
compNodes
函数,请向我们展示另一个。哇,我没听清楚。这就解决了问题,我也可以这样保持我的函数原型!