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 に答える