在struct指针的向量上调用C ++ std :: sort

时间:2016-09-22 04:45:51

标签: c++ sorting vector function-pointers

*已编辑以添加错误消息

当我在一个指向我之前在程序中定义的结构的指针向量上调用它时,Visual Studio的intellisense会对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);
}

1 个答案:

答案 0 :(得分:1)

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

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

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