Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Definire operatori

    Ciao

    ho scritto il seguente programmino.
    Dovrebbe stampare 1,2,3.

    Invece mi stampa 2293575, 2293574, 2293573.

    Sembra non consideri proprio l'inizializzazione i=0,j=i,k=j.


    codice:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    class I {
          public:
                 int operator++(int){};
                 int operator=(int){};
             };
    
             
    std::ostream& operator<<(std::ostream &strm, I& );
    
    int main(int argc, char *argv[])
    {
        I i,j,k;
        
        i=0;
        j=i;
        k=j;
            
        cout << i++ << ",";
        cout << j++ << ",";
        cout << k++;
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    Non hai mica ridefinito gli operatori correttamente!
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    l'ho riscritto in questo modo che penso sia più corretto ma il programma si chiude subito dicendo che Progetto.exe ha smesso di funzionare.

    codice:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    class I {
          public:
                 I(int){};
                 I operator++(int){};
                 I operator=(I x){};
                 friend std::ostream& operator<<(std::ostream &stream,const I& i){};
                ~I(){};
             };
                    
    int main(int argc, char *argv[])
    {
        I i=0,j=i,k=j;
            
        cout << i++ << ",";
        cout << j++ << ",";
        cout << k++;
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    No ... sembra che tu stia scrivendo codice a caso ... esistono regole ben precise per redefinire gli operatori ++ e =

    Dovresti studiarle e solo dopo scrivere correttamente il codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao ... Al codice che hai postato manca:
    1) un variabile membro della classe I. Come fai a memorizzare i valori se non definisci una variabile atta a contenere i valori stessi ???

    2) un costruttore appropriato il cui ruolo è quello di inizializzare la variabile membro (ad esempio a zero) in modo tale da non trovarsi con la variabile membro, di cui sopra, con dati "spazzatura".

    3) Definire i vari operatori ++, =, << in modo approriato (ovvero aumentare di 1 la variabile membro, assegnare la variabile membro e scrivere su stream d' output la variabile membro).

    Concludo facendoti osservare che l' output del programma dovrebbe risultare "0,0,0" siccome prima delle varie chiamate ai vari operatori ++, tutte gli oggetti dovrebbero (assumendo che il codice sia corretto) "contenere" lo stesso dato ovvero 0.
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

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.