*已编辑以添加错误消息

当我在指向程序前面定义的结构的指针的 vector 上调用Visual Studio时,它会智能地标记sort函数。

我实例化了一个指向比较方法的函数指针,并按如下方式调用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);
}

最佳答案

大胆猜测:compNodes重载。您巧妙地尝试使用compareNodes获取指向正确的重载的指针,但实际上并没有在std::sort()中使用它。将行更改为:

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

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

09-05 23:36