Chiamata funzione da un altro file cpp

di il
26 risposte

Chiamata funzione da un altro file cpp

Ciao, è una domanda banale ma non riesco a capire dove sbaglio.
Ho il seguente file:
main.cpp


#include <cstdlib>
#include "miaClasse.h"

using namespace std;

int main(int argc, char** argv) {

    Cliente.mioMain();
    
    return 0;
}
Nella cartela Resource ho i seguenti 2 file

miaClasse.h

#ifndef MIACLASSE_H
#define	MIACLASSE_H

class Cliente
{
public:
char nome[20];
char cognome[20];
char indirizzo[30];
void inserisci_nome( );
void inserisci_cognome( );
void inserisci_indirizzo( );
void mioMain();
};

#endif	/* MIACLASSE_H */
e miaClasse.cpp

#include <iostream>
#include "miaClasse.h"

using namespace std;

void Cliente::inserisci_nome( )
{
cout << "Inserire il nome del dipendente: ";
cin >> nome;
cout << endl;
}

void Cliente::inserisci_cognome( )
{
cout << "Inserire il cognome del dipendente: ";
cin >> cognome;
cout << endl;
}

void Cliente::inserisci_indirizzo( )
{
cout << "Inserire l' indirizzo del dipendente: ";
cin >> indirizzo;
}


void mioMain( )
{
Cliente cliente;
cliente.inserisci_nome( );
cliente.inserisci_cognome( );
cliente.inserisci_indirizzo( );
cout << "Il nome del cliente inserito è: " << cliente.nome << endl;

cout << "Il cognome del cliente inserito è: " << cliente.cognome << endl;

cout << "L' indirizzo del cliente inserito è: " << cliente.indirizzo << endl;
}

non riesco a capire come chiamare mioMain per far eseguire tutto il programma, allo stato attuale mi da il seguente errore su Cliente.mioMain();:

main.cpp:15:12: error: expected unqualified-id before ‘.’ token

26 Risposte

  • Re: Chiamata funzione da un altro file cpp

    Ho trovato l'errore. sul file miaClasse.cpp dimenticavo Cliente::mioMain();

    e sul main.cpp

    Cliente cli;
    cli.mioMain();

    grazie lo stesso
  • Re: Chiamata funzione da un altro file cpp

    Anche se ti funziona non è detto che sia la strada giusta. Prova a fare una funzione stampa_cliente e vedrai che i dati saranno vuoti. Se non capisci il perche poi te la spiego.
  • Re: Chiamata funzione da un altro file cpp

    Il programma così com'è funziona mi fa inserire i dati e poi me li stampa a monitor. Cosa intendi per fare una funzione stampa clienti?
  • Re: Chiamata funzione da un altro file cpp

    
    #ifndef MIACLASSE_H
    #define   MIACLASSE_H
    
    class Cliente
    {
    public:
    char nome[20];
    char cognome[20];
    char indirizzo[30];
    void inserisci_nome( );
    void inserisci_cognome( );
    void inserisci_indirizzo( );
    void mioMain();
    void stampa_cliente();
    };
    
    #endif   /* MIACLASSE_H */
    
    ...........
    .cpp
    void Clienti::stampa_cliente()
    {
    cout << "Il nome del cliente inserito è: " << nome << endl;
    
    cout << "Il cognome del cliente inserito è: " << cognome << endl;
    
    cout << "L' indirizzo del cliente inserito è: " << indirizzo << endl;
    }
    
    .....main
    #include <cstdlib>
    #include "miaClasse.h"
    
    using namespace std;
    
    int main(int argc, char** argv) {
    
        Cliente cli;
        cli.mioMain();
        cli.stampa_cliente();
       
        return 0;
    }
    
  • Re: Chiamata funzione da un altro file cpp

    Però nella tua funzione mancano le dichiarazioni

    Cliente cliente;
    cliente.inserisci_nome( );
    cliente.inserisci_cognome( );
    cliente.inserisci_indirizzo( );
  • Re: Chiamata funzione da un altro file cpp

    Devono mancare. Non puoi dichiarare un cliente ogni volta che ti serve usare la classe.
  • Re: Chiamata funzione da un altro file cpp

    Cambia la funzione mioMain così
    
    void mioMain( )
    {
    inserisci_nome( );
    inserisci_cognome( );
    inserisci_indirizzo( );
    cout << "Il nome del cliente inserito è: " << nome << endl;
    
    cout << "Il cognome del cliente inserito è: " << cognome << endl;
    
    cout << "L' indirizzo del cliente inserito è: " << indirizzo << endl;
    }
    
  • Re: Chiamata funzione da un altro file cpp

    La risposta è:
    "/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
    make[1]: ingresso nella directory "/home/camera/Scrivania/C++/Presentazioni/Classi/ProvaClasse"
    "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/provaclasse
    make[2]: ingresso nella directory "/home/camera/Scrivania/C++/Presentazioni/Classi/ProvaClasse"
    mkdir -p build/Debug/GNU-Linux-x86
    rm -f build/Debug/GNU-Linux-x86/miaClasse.o.d
    g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/miaClasse.o.d -o build/Debug/GNU-Linux-x86/miaClasse.o miaClasse.cpp
    miaClasse.cpp: In member function ‘void Cliente::stampa_cliente()’:
    miaClasse.cpp:28:48: error: ‘cliente’ was not declared in this scope
    miaClasse.cpp: In function ‘void mioMain()’:
    miaClasse.cpp:38:17: error: ‘inserisci_nome’ was not declared in this scope
    miaClasse.cpp:39:20: error: ‘inserisci_cognome’ was not declared in this scope
    miaClasse.cpp:40:22: error: ‘inserisci_indirizzo’ was not declared in this scope
    miaClasse.cpp:41:48: error: ‘nome’ was not declared in this scope
    miaClasse.cpp:43:51: error: ‘cognome’ was not declared in this scope
    miaClasse.cpp:45:53: error: ‘indirizzo’ was not declared in this scope
    make[2]: *** [build/Debug/GNU-Linux-x86/miaClasse.o] Errore 1
    make[2]: uscita dalla directory "/home/camera/Scrivania/C++/Presentazioni/Classi/ProvaClasse"
    make[1]: *** [.build-conf] Errore 2
    make[1]: uscita dalla directory "/home/camera/Scrivania/C++/Presentazioni/Classi/ProvaClasse"
    make: *** [.build-impl] Errore 2


    BUILD FAILED (exit value 2, total time: 222ms)
  • Re: Chiamata funzione da un altro file cpp

    Aspetta che ti faccio la classe completa va. Dammi un attimo.
  • Re: Chiamata funzione da un altro file cpp

    Header file .h
    
    #ifndef MIACLASSE_H
    #define   MIACLASSE_H
    
    class Cliente
    {
    public:
    	Cliente();
    	void crea_cliente();
    	void stampa_cliente();
    private:
    	void inserisci_nome( );
    	void inserisci_cognome( );
    	void inserisci_indirizzo( );
    	char nome[20];
    	char cognome[20];
    	char indirizzo[30];
    
    };
    
    #endif   /* MIACLASSE_H */
    
    CPP file .cpp
    
    #include <iostream>
    #include "miaClasse.h"
    
    using namespace std;
    
    
    Cliente::Cliente()
    {
    }
    
    void Cliente::crea_cliente()
    {
    	inserisci_nome( );
    	inserisci_cognome( );
    	inserisci_indirizzo( );
    }
    
    void Cliente::stampa_cliente()
    {
    	cout << "Il nome del cliente inserito è: " << nome << endl;
    
    	cout << "Il cognome del cliente inserito è: " << cognome << endl;
    
    	cout << "L' indirizzo del cliente inserito è: " << indirizzo << endl;
    }
    
    void Cliente::inserisci_nome( )
    {
    	cout << "Inserire il nome del dipendente: ";
    	cin >> nome;
    	cout << endl;
    }
    
    void Cliente::inserisci_cognome( )
    {
    	cout << "Inserire il cognome del dipendente: ";
    	cin >> cognome;
    	cout << endl;
    }
    
    void Cliente::inserisci_indirizzo( )
    {
    	cout << "Inserire l' indirizzo del dipendente: ";
    	cin >> indirizzo;
    }
    
    MAIN
    
    #include<iostream>
    #include "cliente.h"
    using namespace std;
    
    int main()
    {
    	Cliente cli;
    
    	cli.crea_cliente();
    	cli.stampa_cliente();
    }
  • Re: Chiamata funzione da un altro file cpp

    Ho visto il messaggio ora sono fuori appena rientro controllo
  • Re: Chiamata funzione da un altro file cpp

    Ok funziona ho dovuto correggere #include "cliente.h" con "miaClasse.h". Ho capito anche il discorso di public e private. Hai usato public perchè chiami le funzioni da fuori file mentre private quelle che uso solo all'interno di miaClasse. Ho riscontrato un errore su indirizzo se inserisco 'via roma' nel risultato mi da solo 'via' credo perchè lo spazio dopo via lo vede come fine dell'array char. Come lo risolvo? Usando la classe string ?
  • Re: Chiamata funzione da un altro file cpp

    Cmq ti consiglio di cambiare i char * con std::string. se uno avesse il nome con più di 20 caratteri il programma va in crash.
  • Re: Chiamata funzione da un altro file cpp

    Infatti intendevo quello con usare string. Grazie
Devi accedere o registrarti per scrivere nel forum
26 risposte