Ciao a tutti.
Prima di tutto ci tengo a fare i complimenti al forum (lecchinaggio mode on
), da un pò di tempo lo frequento per trovare risposte alle mie domande, ma questa è la prima volta che devo scrivere.
Ho problemi con l'overloading dell'operatore < per l'esatezza.
Ho creato una classe Arc:
codice:
class Arc
{
public:
Arc();
Arc(int id0, double w0);
bool operator< (Arc a);
bool operator> (Arc a);
bool operator== (Arc a);
bool operator>= (Arc a);
bool operator<= (Arc a);
void operator= (Arc a);
int getId();
double getW();
private:
int id;
double w;
};
...
bool Arc::operator< (Arc a)
{
return w < a.w;
}
Quindi ho creato una priority_queue<Arc> e credo sia proprio a questo punto che mi da problemi, essendo necessario l'operatore <
Ma comunque come vedete ho fatto l'overloading di quello come di tutti nel dubbio.
L'errore è questo
codice:
1>c:\program files\microsoft visual studio 10.0\vc\include\xfunctional(125): error C2678: binary '<' : no operator found which takes a left-hand operand of type 'const Arc' (or there is no acceptable conversion)
1> c:\users\luca\desktop\progetto\progetto\arc.h(11): could be 'bool Arc::operator <(Arc)'
1> while trying to match the argument list '(const Arc, const Arc)'
1> c:\program files\microsoft visual studio 10.0\vc\include\xfunctional(124) : while compiling class template member function 'bool std::less<_Ty>::operator ()(const _Ty &,const _Ty &) const'
1> with
1> [
1> _Ty=Arc
1> ]
1> c:\program files\microsoft visual studio 10.0\vc\include\queue(360) : see reference to class template instantiation 'std::less<_Ty>' being compiled
1> with
1> [
1> _Ty=Arc
1> ]
1> c:\users\luca\desktop\progetto\progetto\progetto.cpp(28) : see reference to class template instantiation 'std::priority_queue<_Ty>' being compiled
1> with
1> [
1> _Ty=Arc
1> ]
1>
1>Build FAILED.
E mi rimanda al del codice read only nominato xfunctional
Sapete cosa posso fare?