我是 C++ 的新手,所以请耐心等待。我正在尝试对充满节点的 vector 进行排序。在我的 .h 文件中,我对节点有以下定义:
class Node{
public:
Node(int data);
bool sortMe(const Node & n1, const Node & n2);
int getData();
private:
int nData;
};
在我的 .cpp 文件中,我定义了如下函数:
Node::Node(int data){
this->nData = data;
}
bool Node::sortMe(const Node & n1, const Node & n2){
return n1.nData < n2.nData;
}
主要尝试使用以下方法对 vector 进行排序:
Node aNode(7);
Node bNode(90);
Node cNode(84);
std::vector<Node> arrayName;
arrayName.push_back(aNode);
arrayName.push_back(bNode);
arrayName.insert(arrayName.begin(), cNode);
std::sort(arrayName.begin(), arrayName.end(), &Node::sortMe);
我包括算法和所有东西,我只是想不通为什么它不想使用那个函数来对数据进行排序...
提前致谢!
最佳答案
sortMe()
当前声明为成员函数。这意味着需要在 Node
类的特定实例上调用它,而不是将其用作独立函数。
要修复它,只需在函数声明前加上 static
前缀(仅在类头中;不在实现中)。这意味着函数属于类,而不是特定实例。
关于c++ - 使用定义的类在 C++ 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21152372/