0

这是我的代码:

#include "btScalar.h"
#include "btAlignedAllocator.h"
#include "btAlignedObjectArray.h"

class Comparator
{
    btAlignedObjectArray<int> items;

    // Edit: this member function is to be called from within the comparator
    int myReference()
    {
        return 0;
    }

public:
    Comparator()
    {
        items.push_back(5);
        items.push_back(1);
        items.push_back(3);
        items.push_back(8);     
    }

    int operator()(const int &a, const int &b) const
    {
        return a + myReference() < b;
    }

    void doSort()
    {
        items.quickSort(*this);

        for (int i=0; i<items.size(); i++) {
            printf("%d\n", items[i]);
        }
    }
};

int main()
{
    Comparator myClass;

    myClass.doSort();

    printf("done!\n");

    return 0;
}

错误是No matching function for call to object of type 'const Comparator'

btAlignedObjectArray.h的第 345 和 347 行

4

1 回答 1

1

尝试添加const到您的operator()

int operator()(const int &a, const int &b) const
//                                         ^^^^^
{
    return a < b;
}

同样,正如您已经自己捕获的那样, myReference 也应该是 const

int myReference() const
//                ^^^^
于 2013-08-13T05:52:06.107 回答