Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C++] sovrapposizione operatore relazionale

    Salve.
    La sintassi per la sovrapposizione di questo operatore dovrebbe eseere così:
    codice:
    class libro{
    private:
    double prezzo;
    ........
    l'operatore
    codice:
    int operator==(const libro& a, const libro& b);
    {
    if(a.prezzo != b.prezzo) return 0;
     return 1;
    };
    GIUSTO?
    Ma se io nella parte private mi trovo in questa situazione....
    codice:
    char* titolo;
    char* casaEditrice;
    double prezzo;.
    Il mio problema è qui!!
    la sintassi dell'operatore dovrebbe essere questa pure per il char*?
    codice:
    int operator==(const libro& a, const libro& b);
    {
     if(a.titolo != b.titolo) return 0;
     if(a.casa != b.casaEditrice) return 0;
     if(a.prezzo != b.prezzo) return 0;
     return 1;
    };
    Il titolo e la casa Editrice non si possono implementare in questo modo vero?
    Se no, come si fa?
    SO DI NON SAPERE... (COME DIREBBE SOCRATE)

    QUESTO E' IL GUAIO... (COME DICO IO )

  2. #2
    Pensa te .. 'sovrapposizione' era 'overloading'!

    1. Probabilmente (non e` sempre detto) vuoi fare un confronto fra stringhe. Percio` devi usare strcmp(), che ritorna 0 se le stringhe sono uguali;

    2. Non usare 'int' per un booleano, esiste 'bool' apposta;

    3. E` piu` semplice di quanto tu creda:

    codice:
    bool operator==( const libro& a, const libro& b );
    {
        return ( !strcmp( a.titolo, b.titolo ) && !strcmp( a.casaEditrice, b.casaEditrice ) && ( a.prezzo == b.prezzo ) );
    };
    Affinche` due libri siano uguali devono avere tutti i campi uguali (secondo un operatore == adeguato).

    Affinche` due libri siano diversi basta che almeno un campo sia diverso.

    ( a && b ) == !( !a || !b );

    De Morgan.

  3. #3
    Pensa te .. 'sovrapposizione' era 'overloading'!
    sul libro che ho io l'argomento non è spiegato chiaramente, a cominciare dal titolo :adhone:

    grazie RoX.
    SO DI NON SAPERE... (COME DIREBBE SOCRATE)

    QUESTO E' IL GUAIO... (COME DICO IO )

  4. #4
    Originariamente inviato da dragon17
    sul libro che ho io l'argomento non è spiegato chiaramente, a cominciare dal titolo :adhone:

    grazie RoX.
    che libro è, se mi posso permettere?
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Originariamente inviato da r0x
    Pensa te .. 'sovrapposizione' era 'overloading'!
    Ecco perchè non ci avevo capito un cazzo e avevo lasciato perdere

  6. #6

    X Luc@s

    che libro è, se mi posso permettere?
    il libro è"programmare in c++" di john Hubbard
    SO DI NON SAPERE... (COME DIREBBE SOCRATE)

    QUESTO E' IL GUAIO... (COME DICO IO )

  7. #7
    a sto punto approfitterei un po, se qualcuno mi risponde entro stamattina!! (pom ho esami:metallica )

    Sempre per quanto riguarda gli operatori...
    Se io ho una traccia del genereProggettare l'operatore == per la classe libreria (int num e libro*libri).Deve ricevere in ingresso una libreria e deve restituire TRUE se l1==l2 altrimenti false.

    Se ho capito bene dovrebbe essere così
    codice:
     
    
    bool operator==( const libreria& l1,const libreria& l2)
    {
    if(l1.prezzo != l2.prezzo) return 0;
    for (int i=0;i<l1.num;i++)
    if(l1.libri[i] != l2.libri[i])return 0;
    retun 1;
     
    };
    Giusto?
    Invece se ho delle stringhe e le devo comparare devo usare il comando strcmp.
    SO DI NON SAPERE... (COME DIREBBE SOCRATE)

    QUESTO E' IL GUAIO... (COME DICO IO )

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Ma sai che io questa roba non l'ho mai vista da nessuna parte!!! :master:

    Dove usi quel costrutto? Lo usi all'interno di un un if o cos'altro?

  9. #9
    Dove usi quel costrutto? Lo usi all'interno di un un if o cos'altro?
    Questo costrutto lo dichiaro all'interno della classe come Friend
    codice:
    Class libreria
    {
    friend bool operator==(const libreria& l);
    private:
    int num;
    libro*libri;
    public:
    ......
    Cmq l' ho rivisto, e penso che debba andare bene così
    bool libreria:perator==(const libreria& l)
    libreria l1,l2;
    if(l1.num != l2.num) return false;
    for(int i=0; i<num;i++)
    if(l1.libri[i] != l2.libri[i])return false;
    else
    {
    return true
    };
    Praticamente sinchè il numero dei libri presenti nella prima libreria è diverso dal numero di libri presenti nella seconda il programma restituisce FALSE,e la stessa cosa avviene per il tipo di libri
    SO DI NON SAPERE... (COME DIREBBE SOCRATE)

    QUESTO E' IL GUAIO... (COME DICO IO )

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Ho capito...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.