This is my code:
#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;
}
The error is No matching function for call to object of type 'const Comparator'
in lines 345 and 347 in btAlignedObjectArray.h
Try to add const
to your operator()
int operator()(const int &a, const int &b) const
// ^^^^^
{
return a < b;
}
Also as you have captured by yourself already, myReference should be const as well
int myReference() const
// ^^^^