Sign in to follow this  
Headkaze

[C++] vectorT sorting

Recommended Posts

Headkaze    607
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);

Share this post


Link to post
Share on other sites
Antheus    2409
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this