[C++] vectorT sorting

Started by
1 comment, last by Headkaze 14 years ago
Looking at the example from here I am trying to add sorting for a vector<T> in a class but I am getting "error: '__comp' cannot be used as a function" In my class I have
class QuadManager {
public:
	QuadManager();
	~QuadManager();
	
	bool operator() (Quad3D* quad1, Quad3D* quad2) { return (quad1->Texture()->Id() < quad2->Texture()->Id()); }

	vector<Quad3D*>	m_quadArray;
};
Then in the class I try and sort
sort(m_quadArray.begin(), m_quadArray.end(), this);
Advertisement
this is a pointer. Compare needs to be value type, since sort calls p() or p.operator(), not p->operator().

Solution would be to pass *this, but it is a very bad idea, since it is highly likely that one or more copies of compare object will be made.

Compare predicate is typically implemented as a standalone class.
Thanks I created a "QuadSorter" class this worked.

This topic is closed to new replies.

Advertisement