[c++] sortowanie list

0

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>]

0

Zobacz na prototyp: bool compareMethod (const node& ,const node& ); i na definicje funkcji

bool compareMethod (const charNode& first,const charNode& second){
...
}

Przekazujesz predykat dla typow node a nie dla charNode i dlatego nie moze znaleŹĆ takiej funkcji...

1 użytkowników online, w tym zalogowanych: 0, gości: 1