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:
Quindi ho creato una priority_queue<Arc> e credo sia proprio a questo punto che mi da problemi, essendo necessario l'operatore <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; }
Ma comunque come vedete ho fatto l'overloading di quello come di tutti nel dubbio.
L'errore è questo
E mi rimanda al del codice read only nominato xfunctionalcodice: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.
Sapete cosa posso fare?

), da un pò di tempo lo frequento per trovare risposte alle mie domande, ma questa è la prima volta che devo scrivere.
Rispondi quotando