gpt4 book ai didi

c++ - 使用定义的类在 C++ 中排序

转载 作者:行者123 更新时间:2023-11-27 23:09:33 26 4
gpt4 key购买 nike

我是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com