View Single Post
Old 12-01-2007, 18:29   #1
dierre
Senior Member
 
L'Avatar di dierre
 
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
[C++] STL sort - array di oggetti

Allora ecco cosa ho fatto:

Codice:
//card.h
 
#ifndef CARD_H
#define CARD_H
using namespace std;
class Card {
    private:
    int suit;
    int val;
    int taken;
     public:
     Card();
     int getSuit()const;
     int getVal()const;
     ...
     bool operator<(const Card&);
    };
#endif
 
 
//card.cpp
 
bool Card::operator<(const Card& a) {
    return getVal() < a.getVal();
}
dunque...in un altro file:
Codice:
#include <algorithm>
 
...
 
void Combinator::Comb5(Card i[]){
 
...
 
        case 5:
        sort(i,i+4);
        break;
      }
}
Ma purtroppo da una sfilza di errori:

Codice:
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits/stl_algo.h: In function `const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&) [with _Tp = Card]':
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits/stl_algo.h:2482:   instantiated from `void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size) [with _RandomAccessIterator = Card*, _Size = int]'
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits/stl_algo.h:2553:   instantiated from `void std::sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = Card*]'
combinator.cpp:56:   instantiated from here
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits/stl_algo.h:90: error: passing `const Card' as `this' argument of `bool Card::operator<(const Card&)' discards qualifiers
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits/stl_algo.h:91: error: passing `const Card' as `this' argument of `bool Card::operator<(const Card&)' discards qualifiers
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits/stl_algo.h:93: error: passing `const Card' as `this' argument of `bool Card::operator<(const Card&)' discards qualifiers
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits/stl_algo.h:97: error: passing `const Card' as `this' argument of `bool Card::operator<(const Card&)' discards qualifiers
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits/stl_algo.h:99: error: passing `const Card' as `this' argument of `bool Card::operator<(const Card&)' discards qualifiers
Dato che ho provato a fare una cosa tipo if(i[0]<i[1]) e non da errori suppongo di sbagliare ad usare il sorting. Credo ci sia qualche problema nell'uso dei const...però non riesco a capire bene che errore faccio.
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale.
Go to a Wormhole
dierre è offline   Rispondi citando il messaggio o parte di esso