[Risolto]errore eclipse c++

di il
12 risposte

[Risolto]errore eclipse c++

Salve, usando eclipse per programmare in c++( causa università), mi da questo errore in fase di build:
no match for 'operator>>' in 'std::cin>>((acconto*)this)->acconto::bilancio' . Il codice è questo:
acconto.h
class acconto
{
    public:
	acconto(int);
	~acconto();
	 int bilancio();
	int  debito();

	int  credito(int);
    void getdebito();
	 void  getbilancio();


};
acconto.cpp
#include <iostream>
#include "acconto.h"
using namespace std;

acconto::acconto(int bilancioiniziale)
{
	int bilancio=0;

	if (bilancioiniziale>0)
	{
		bilancio=bilancioiniziale;
	}
	else

		cout<<"bilancio uguale 0\n";

	if(bilancioiniziale<0)
	{
		cout<<"errore, il bilancio non può essere negativo\n";
	}
}



acconto::~acconto()
{
	cout<<"distruttore della classe acconto\n";
}



int  acconto::credito(int ammonto )

{
	int bilancioiniziale;
	int bilancio;

	 bilancio=bilancioiniziale+ammonto;
}

int  acconto::debito()
{
    int acconto;
    int bilancio;
    int ammanco;
	 ammanco = bilancio-acconto;
}
void  acconto::getbilancio()
{

 cout<<"inserire il bilancio\n";
 cin>>bilancio;
}
testacconto.cpp
#include <iostream>
#include "acconto.h"
using namespace std;
int main()
{
	acconto acc1(70);
	acconto acc2(0);
	cout<<"il bilancio inziale è di €"<<acc1.getbilancio()<<endl;
	cout<<"il bilancio iniziale è di €"<<acc2.getbilancio()<<endl;
	int quantitadirecesso;
	cout<<"inserire la quantità di recesso 1 per il primo acconto: ";
	cin>>quantitadirecesso;
	cout<<"\ sottraggo  "<<quantitadirecesso
			<<"dal bilancio dell'acconto 1\n\n";



	cout<<"gli euro sottratti dall'acconto 1 sono "<<quantitadirecesso<<endl;
	cout<<"mostrare il bilancio dell'acconto 1 "<<acc1.getbilancio()<<endl;
	cout<<"mostrare bilancio dell'acconto 2"<<acc2.getbilancio()<<endl;
	cout<<"inserire la quantità di recesso per l'acconto 2 \n";
	cin>>quantitadirecesso;
	cout<<"il sottratto dall'acconto 2 è"<<quantitadirecesso<<endl;

	cout<<"gli euro sottratti dall'acconto 2 sono"<<quantitadirecesso<<endl;
	cout<<"mostrare il bilancio dell'acconto 1"<<acc1.getbilancio()<<endl;
	cout<<"mostrare il bilancio dell'acconto 2"<<acc2.getbilancio()<<endl;

}

12 Risposte

  • Re: [Risolto]errore eclipse c++

    Dovresti indicarci anche su che linea di viene dato l'errore.
    Comunque nel tuo codice mi sembra che manchi il corpo del metodo bilancio().
  • Re: [Risolto]errore eclipse c++

    Ciao,
    il codice mi sembrava impostato piuttosto male (metodi dichiarati int che non ritornano niente, variabili dichiarate e non utilizzate, ecc.)
    Ho provato a correggere il codice provando a immaginare quello che vuoi che il programma faccia. Posto il risultato: prova a guardare bene cosa è cambiato e poi ci fai sapere se hai altri dubbi.

    acconto.h
    
    class acconto
    {
    public:
        acconto(int);
        ~acconto();
        int bilancio;       /* variabile che tiene traccia della cifra disponibile */
        /* NON CONFONDERE VARIABILI E FUNZIONI!! */
        int  debito(int);      /* funzione che decrementa i soldi disponibili */
    
        int  credito(int);  /* funzione che incrementa i soldi disponibili */
        void getdebito();
        int  getbilancio();     /* questa funzione deve ritornare la cifra disponibile, cioe' bilancio */
    
    
    };
    
    acconto.cpp
    #include <iostream>
    #include "acconto.h"
    using namespace std;
    
    acconto::acconto(int bilancioiniziale)
    {
        if (bilancioiniziale>=0)
        {
            bilancio=bilancioiniziale;
        }
        else
        {
            cout<<"errore, il bilancio non può essere negativo\n";
        }
    }
    
    
    
    acconto::~acconto()
    {
        cout<<"distruttore della classe acconto\n";
    }
    
    
    
    int  acconto::credito(int ammonto )
    
    {
        bilancio += ammonto;      /* incremento il bilancio di una cifra pari a "ammonto" */
        return bilancio;        /* restituisco il nuovo bilancio */
    }
    
    int  acconto::debito(int prelievo)
    {
        bilancio -= prelievo;       /* decremento il bilancio */
        return bilancio;            /* e lo restituisco */
    }
    int  acconto::getbilancio()
    {
        return bilancio;        /* semplicemente restituisco il bilancio attuale */
    }
    
    testacconto.cpp
    #include <iostream>
    #include "acconto.h"
    using namespace std;
    int main()
    {
        acconto acc1(70);
        acconto acc2(0);
        cout<<"il bilancio inziale e' di EUR"<<acc1.getbilancio()<<endl;
        cout<<"il bilancio iniziale e' di EUR"<<acc2.getbilancio()<<endl;
        int quantitadirecesso;
        cout<<"inserire la quantità di recesso 1 per il primo acconto: ";
        cin>>quantitadirecesso;
        cout<<" sottraggo  "<<quantitadirecesso <<" EUR dal bilancio dell'acconto 1\n\n";
        acc1.debito(quantitadirecesso);
        cout<<"gli euro sottratti dall'acconto 1 sono "<<quantitadirecesso<<endl;
        cout<<"mostrare il bilancio dell'acconto 1: "<<acc1.getbilancio()<<endl;
        cout<<"mostrare bilancio dell'acconto 2: "<<acc2.getbilancio()<<endl;
        cout<<"inserire la quantità di recesso per l'acconto 2: ";
        cin>>quantitadirecesso;
        cout<<"il sottratto dall'acconto 2 e' "<<quantitadirecesso<<endl;
        acc2.debito(quantitadirecesso);
        cout<<"gli euro sottratti dall'acconto 2 sono "<<quantitadirecesso<<endl;
        cout<<"mostrare il bilancio dell'acconto 1: "<<acc1.getbilancio()<<endl;
        cout<<"mostrare il bilancio dell'acconto 2: "<<acc2.getbilancio()<<endl;
    
    }
    
  • Re: [Risolto]errore eclipse c++

    @ minomic ... probabilmente, a mio parere, a birkhoff92 serve di più sapere dove sbaglia e la causa precisa dell'errore piuttosto che un codice corretto e pronto. Questo sia perché all'università un professore all'esame si accorgerà comunque se ha assimilato i concetti o copiato del codice pronto, sia perché nella sua carriera di programmatore se la dovrà vedere da solo con gli errori e difficilmente otterrà del codice pronto.

    L'errore indicato

    no match for 'operator>>' in 'std::cin>>((acconto*)this)->acconto::bilancio'

    è causato dalla linea

    cin>>bilancio;

    in

    acconto::getbilancio()

    e questo perché

    bilancio

    non è un elemento della classe in cui puoi memorizzare un valore.

    Fra l'altro, non è affatto bene che un elemento in cui mantenere il valore attuale del "bilancio" dovrebbe essere privata e non pubblica nella tua classe. Quindi

    private:
    int bilancio;
  • Re: [Risolto]errore eclipse c++

    @oregon: hai assolutamente ragione, infatti nel codice avevo messo qualche annotazione come
    
    /* NON CONFONDERE VARIABILI E FUNZIONI!! */
    
    perché secondo me stava tentando di memorizzare qualche valore in bilancio() (con le parentesi!)

    Comunque i tuoi suggerimenti sono sempre benvenuti!

  • Re: [Risolto]errore eclipse c++

    Grazie a tutti per le risposte alla fine il codice l'ho corretto così:
    acconto.h
    class acconto
    {
    public:
    	acconto(int =0);
    	void credito(int );
    	void debito(int );
    	int getbilancio() const;
    
    private:
    	int bilancio;
    };
    
    acconto.cpp
    #include "acconto.h"
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    acconto::acconto(int bilancioiniziale)
    {
    	bilancio=bilancioiniziale;
    	if(bilancioiniziale<0)
    		cout<<"il saldo  non puo' essere negativo!\n";
    }
    
    void acconto::credito(int ammonto)
    {
    	if(ammonto<0)
    		cout<<"la quantita' da aggiungere non puo' essere negativa!\n";
    	bilancio+=ammonto;
    }
    
    void acconto::debito(int ammonto)
    {
    	if(ammonto<=bilancio)
    	{
    		cout<<"sto sottraendo €"<<ammonto<<" dal saldo..\n";
    		bilancio-=ammonto;
    	}
    	if(ammonto>bilancio)
    		cout<<"la quantita' da sottrarre non puo' essere maggiore del saldo!\n\n";
    }
    
    int acconto::getbilancio() const
    {
    	return bilancio;
    }
    
    mainacconto.cpp
    
    #include "acconto.h"
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main()
    {
    	int quantitàdirecesso, newammonto;
    	acconto acconto1(50),acconto2;
    	cout<<"il saldo per l'acconto1 e': €"<<acconto1.getbilancio()<<"\n";
    	cout<<"il saldo per l'acconto2 e': €"<<acconto2.getbilancio()<<"\n\n";
    
    	cout<<"inserisci la quantitàdirecesso per l' acconto1: €";
    	cin>>quantitàdirecesso;
    	acconto1.debito(quantitàdirecesso);
    	cout<<"il saldo per l'acconto1 e': €"<<acconto1.getbilancio()<<"\n\n";
    
    	cout<<"inserisci quantitàdirecesso per account2: €";
    	cin>>quantitàdirecesso;
    	acconto2.debito(quantitàdirecesso);
    	cout<<"il saldo per l'acconto2 e': €"<<acconto2.getbilancio()<<"\n\n";
    
    	cout<<"inserisci il nuovo ammontare  per l'acconto1: ";
    	cin>>newammonto;
    	acconto1.credito(newammonto);
    	cout<<"il saldo per l'acconto1 e': €"<<acconto1.getbilancio()<<"\n\n";
    
    
    	return 0;
    }
    
    

    Ma purtroppo ho ancora errori soprattutto mi dice che
    alla voce 'int quantitàdirecesso,newammonto;' ci sono errori tipo stray /304 e stray /204 :\
  • Re: [Risolto]errore eclipse c++

    Per l'errore "stray"

    probabilmente hai editato il sorgente con un altro editor o hai copiato&incollato male
    Per quanto riguarda i commenti sui professori: a parte il fatto che potrebbero seguire questo forum (e poi riconoscere te e il tuo sorgente ), io non mi lamenterei troppo e ci darei dentro con lo studio e la pratica!
  • Re: [Risolto]errore eclipse c++

    candaluar ha scritto:


    Per quanto riguarda i commenti sui professori: a parte il fatto che potrebbero seguire questo forum (e poi riconoscere te e il tuo sorgente ), io non mi lamenterei troppo e ci darei dentro con lo studio e la pratica!
    Concordo con questo suggerimento!

    Per quanto riguarda il debugging io tendo ad essere d'accordo con il tuo insegnante: secondo me per i principianti è spesso inutile (quando non controproducente) e forse è meglio sviluppare l'abilità di "leggere" e comprendere il codice e capire quali sono i punti che non funzionano.

  • Re: [Risolto]errore eclipse c++

    Per quanto riguarda il debugging io tendo ad essere d'accordo con il tuo insegnante: secondo me per i principianti è spesso inutile (quando non controproducente) e forse è meglio sviluppare l'abilità di "leggere" e comprendere il codice e capire quali sono i punti che non funzionano.
    Anch'io mi trovo completamente d'accordo, tanto più che i problemi sollevati in questo thread sono tutti relativi alla fase di compilazione (e non si sarebbero potuti risolvere neanche avendo a disposizione il più potente dei debugger!!!).
  • Re: [Risolto]errore eclipse c++

    Alla fine ho risolto ieri sera sul tardi; in pratica non riconosceva la a accentata in quantitàdirecesso e ho risolto poi scrivendo quantitadirecesso
  • Re: [Risolto]errore eclipse c++

    minomic ha scritto:


    candaluar ha scritto:


    Per quanto riguarda i commenti sui professori: a parte il fatto che potrebbero seguire questo forum (e poi riconoscere te e il tuo sorgente ), io non mi lamenterei troppo e ci darei dentro con lo studio e la pratica!
    Concordo con questo suggerimento!

    Per quanto riguarda il debugging io tendo ad essere d'accordo con il tuo insegnante: secondo me per i principianti è spesso inutile (quando non controproducente) e forse è meglio sviluppare l'abilità di "leggere" e comprendere il codice e capire quali sono i punti che non funzionano.

    non sono d'accordo in quanto il debugging è fondamentale in ambito di programmazione proprio per scovare errori in codice non scritto di persona; infatti, molto probabilmente non avrete intuito, io ho dovuto aggiustare un codice passatomi da un collega e senza debugging sono dovuto andare alla cieca e non mi sembra na cosa positiva. Poi ognuno ha le sue opinioni xd
  • Re: [Risolto]errore eclipse c++

    non sono d'accordo in quanto il debugging è fondamentale in ambito di programmazione proprio per scovare errori in codice non scritto di persona
    La maggior parte delle volte viene eseguito su codice scritto proprio da noi stessi
    Però se accusi il professore (vedo che hai cancellato le accuse) di non insegnarti ad usare il debugger sottintendi che non lo sai usare: come fai a dire che uno strumento è utile se non lo sai utilizzare?
    io ho dovuto aggiustare un codice passatomi da un collega
    Ma scusa, non avevi detto che era per scuola
    ( causa università)
    io ho dovuto aggiustare un codice passatomi da un collega e senza debugging sono dovuto andare alla cieca e non mi sembra na cosa positiva
    Chi ti ha aiutato in questo forum ha analizzato il codice che hai postato, senza debugger.
    Poi ognuno ha le sue opinioni xd
    Concordo. L'importante che siano basate su fatti e non su "sentito dire".
  • Re: [Risolto]errore eclipse c++

    Collega di scuola esatto il debugger ho seguito una video guida di 10 min su youtube ma non è la stessa cosa che farlo per bene di persona
Devi accedere o registrarti per scrivere nel forum
12 risposte