Witam
Mam pytanie chce posortowac liste z moimi obiektami wyglada to tak
#include <list>
using namespace std;
#include"node.h"
bool compareMethod (const node& ,const node& );
class nodeContainer{
private:
list<charNode> storedData;
list<node> digitNodes;
void sortuj();
public:
void addCharNode(char);
void deleteCharNode(char);
void parseString();
void buildTree();
charNode& getTreeTop();
};
#include "nodeContainer.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool compareMethod (const charNode& first,const charNode& second){
bool retval;
if((first.getVal())>=(second.getVal()))
{
retval=true;
}
else
{
retval = false;
}
return retval;
}
void nodeContainer::parseString(){
string dane;
int flaga=0;
cout<<"Podaj ciag znakow: ";
getline(cin,dane);
cout<<dane<<endl;
string::iterator it;
list<charNode>::iterator it2;
for(it=dane.begin();it!=dane.end();it++){
if(storedData.size()==0){
storedData.push_back(charNode(*it));
continue;
}
for(it2 = storedData.begin();it2!=storedData.end();it2++){
if((*it2).getCharVal()==*it)
{
(*it2).incrementVal();
flaga=1;
break;
}
}
if(flaga==0) storedData.push_back(charNode(*it));
flaga=0;
}
for(it2=storedData.begin();it2!=storedData.end();it2++){
cout<<(*it2).getCharVal()<<"wyst razy"<<(*it2).getVal()<<endl;
}
}
void nodeContainer::sortuj(){
storedData.sort(compareMethod);
}
int main(void){
nodeContainer p;
p.parseString();
return 0;
}
Problem jest w sortiwaniu mam zadeklarowana funkcje sortujaca a otrzymuje taki komunikat:
nodeContainer.cc: In member function ‘void nodeContainer::sortuj()’:
nodeContainer.cc:55: error: no matching function for call to ‘std::list<charNode, std::allocator<charNode> >::sort(<unresolved overloaded="overloaded" function="function" type="type">)’
/usr/include/c++/4.3/bits/list.tcc:303: note: candidates are: void std::list<_Tp, _Alloc>::sort() [with _Tp = charNode, _Alloc = std::allocator<charNode>]