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

标签 c++

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

相关文章:

c++ - 具有可变参数的映射函数并通过字符串调用 c++

c++ - 如何获得在 Mac OS X 上运行的 Homebrew 版本的 GDB?

c++ - Windows 线程创建期间的内存管理

c++ - 如何使用 MySQL(在 C++ 中)执行 INSERT 语句?

c++ - 使用 g++ 5.3.1 编译的程序运行速度比使用 g++ 4.8.4 编译的相同程序慢 3 倍,相同的命令

c++ - [C++] 将一个字符串分割成由另一个字符串中给出的符号以外的任何分隔符分隔的字符串?

c++ - 什么时候隐式实例化会导致问题?

C++ 警告 : pragma once in main file

c++ CString Tokenize 奇怪的问题

c++ - 按下 F5 且源代码已过时时启用自动构建