私はこのコードで立ち往生しています:
class MyObject
{
public:
int value;
}
class MyClass
{
private:
btAlignedObjectArray<MyObject*> m_objects;
public:
int comp (MyObject *a, MyObject *b)
{
return calculateTheNewValue(a->value) < calculateTheNewValue(b->value);
}
void doSort()
{
m_objects.quickSort(comp);
}
//edit: this member function is needed to do the sorting
int calculateTheNewValue(int v)
{
// do some calculation using other members variables, not necessarily m_objects
}
};
comp は非静的メンバー関数であるため、コンパイルされません。
comp はメンバー変数 m_objects にアクセスする必要があるため、静的にすることはできません。
また、m_objects のカプセル化を無効にして静的関数を作成し、このように呼び出します。
MyClass::doSort(myClass.m_objects)
編集
これは btAlignedObjectArray の宣言です
http://bulletphysics.org/Bullet/BulletFull/btAlignedObjectArray_8h_source.html
行 365 には宣言またはquicksort