gpt4 book ai didi

c++ - 对类中结构的 C++ vector 进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:51 26 4
gpt4 key购买 nike

我有一个基本上看起来像这样的类(我删除了不必要的代码):

class WilxList {
private:
struct Test{
double number;
int sign;
int rank;
};
bool testSorter(const Test & x1, const Test & x2);
public:
WilxList(std::vector<double> &argNumbers, std::string argName, int numberOfTests);
};

我正在尝试对这样的测试结构 vector 进行排序:

WilxList::WilxList(std::vector<double> &argNumbers, std::string argName, int numberOfTests)
{
//Omitted code
std::vector<Test> sortedTests;
//Omitted code where Tests are created and added to the vector inside for loop
std::sort(sortedTests.begin(), sortedTests.end(), testSorter); //ERROR

我得到的错误是:

error C3867: 'WilxList::testSorter': function call missing argument list; 
use '&WilxList::testSorter' to create a pointer to member
c:\users\stenver\documents\visual studio 2012\projects\wilxoniastakutest\wilxoniastakutest\wilxlist.cpp

最佳答案

testSorterWilxList 类的非静态成员函数这是造成困难的原因。使用指向非静态成员函数的函数指针相对更困难,并且不可能在需要自由(或静态成员)函数的情况下使用,如 sort算法。

一个选项解决这个问题是移动 testSorter进入结构本身并将其重命名为 operator< .这会让你做类似 x1<x2 的事情你可以调用 sort 作为 std::sort(sortedTests.begin(), sortedTests.end());这是假设函数实际上代表一个 <操作,如果不是,它可能会变得困惑,并且将它设为静态成员函数会更整洁。在任何一种情况下,错误都会消失。

关于c++ - 对类中结构的 C++ vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465301/

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