0
Ceci est mon code:Pourquoi ne puis-je pas utiliser un foncteur comme fonction de comparaison dans btAlignedObjectArray: quicksort?
#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;
}
L'erreur est No matching function for call to object of type 'const Comparator'
dans les lignes 345 et 347 dans btAlignedObjectArray.h
Je genre de travaux, désolé je ne comprend pas toute l'histoire, j'ai ajouté la fonction de membre MyReference(), qui doit être appelé au sein de l'opérateur foncteur surchargé – rraallvv
L'erreur est que MyReference besoin d'être constante, je suppose que je devrais refactoriser mon code – rraallvv
fondamentalement, toutes les fonctions membres non statiques n'ont pas l'intention de modifier le membre devrait déclarer comme const :) – billz