...

View Full Version : List.Sort(compare_function) - term does not evaluate to a function taking 2 arguments



Shaitan00
07-15-2009, 07:30 AM
I am trying to customize my sorting of a LIST using a compare_function, but for some odd reason it keeps giving me the following error:
error C2064: term does not evaluate to a function taking 2 arguments

Specifically, I have list created within class B which needs to be sorted, the list contains elements of type A* as shown below:

Class B code:


B::B()
{
list<A*> AList;

AList.push_back(new A(ID_1, CODE_1));
AList.push_back(new A(ID_2, CODE_2));

AtList.sort(&B::compareID);
}

bool B::compareID(A* first, A* second)
{
return true; // test for now
}


Just for completness the following is the code for Class A:


Class A
{
long ID;
string sCode;
A(_ID, _sCode) : ID(_ID), sCode(_sCode) {};
}


So, pretty much I just want to sort AList by ID, but for some odd reason this generates:
error C2064: term does not evaluate to a function taking 2 arguments

Also, in the future I am going to want to create a compareCode() function to also compare by code ... thought if one way works so will the other ...

Any clues, hints, or help would be greatly appreciated.
Thanks,

oracleguy
07-15-2009, 05:27 PM
Off the top of my head, your compare function needs to be a static method.

Dunna
07-20-2009, 03:06 AM
Can I see your sort function (if oracleguy wasn't right)? Also, is compareId a function, a variable, or both?



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum