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

    [C++] compilare con stringhe

    Buongiorno a tutti,
    oggi ho provato a realizzare un semplice programma ma al momento di compilare mi da l'errore " 'string' does not name a type ". Posto qui in basso quanto scritto finora dividendo le parti di codice per classe,implementazione e main.
    Grazie

    CLASSE:
    codice:
    #include <string>
    
    class Studente
    {
          private:
                  string nome;
                  string cognome;
                  string matricola;
                  
          public:
                Studente(int = 0);
                
                void setNome(string);
                void setCognome(string);
                void setMatricola(string);
                
                string getNome() const;
                string getCognome() const;
                string getMatricola() const;
                
                void stampaStudente();
    };
    IMPLEMENTAZIONE:

    codice:
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include "studente.h"
    
    using namespace std;
    
    void Studente::setNome(string n)
    {
         nome = n;
    }
    
    void Studente::setCognome(string c)
    {
         cognome = c;
    }
    
    void Studente::setMatricola(string m)
    {
         matricola = m;
    }
    
    string Studente::getNome() const
    {   
           return nome;
    }
    
    string Studente::getCognome() const
    {
           return cognome;
    }
    
    string Studente::getMatricola() const
    {
           return matricola;
    }
    
    void Studente::stampaStudente()
    {
            cout << "Nome: " << nome << endl;
    	cout << "Cognome: " << cognome << endl;
    	cout << "Matricola: " << matricola << endl;
    }
    MAIN:

    codice:
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include "studente.h"
    
    using namespace std;
    
    int main()
    {
        Studente s;
      
            s.setNome("Giovanni");
    	s.setCognome("Rossi");
    	s.setMatricola("111111");
    	
        s.stampaStudente();
        
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Probabilmente il problema è in

    string matrcola;


    E poi cosa volevi dire con

    Studente(int = 0);

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ho corretto matricola, purtroppo continua a dare quel tipo di errore.

    ho scritto Studente(int=0); perchè dopo, una volta testato il programma, vorrei inserire

    Studente::Studente(int numEsami)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come fai a testarlo se è impossibile compilarlo ?

    Per ora elimina quel

    Studente(int = 0);



    In ogni caso, in quale linea ti dà l'errore? Quale compilatore usi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Uso il Dev-C++

    Mi segnala errore nella classe Studente, piu precisamente le tre stringhe nome,cognome,matricola.

    codice:
    #include <string>
    
    class Studente
    {
          private:
                  string nome;
                  string cognome;
                  string matricola;
                  
          public:
                Studente(int = 0);
                
                void setNome(string);
                void setCognome(string);
                void setMatricola(string);
                
                string getNome() const;
                string getCognome() const;
                string getMatricola() const;
                
                void stampaStudente();
    };

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La classe è in un file separato? Hai aggiunto

    using namespace std;

    prima della classe?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    si è diviso in 3 files, non avevo inserito using namespace std; nella classe.ora le stringhe non mi danno problemi. Grazie.

    Adesso mi dice [linker error] undefined reference to 'Studente::Studente(int)'

    forse perchè non ho inizializzato il costruttore Studente() ?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Direi che non esiste il costruttore in questione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Risolto, non avevo appunto inizializzato il costruttore.

  10. #10
    Occhio comunque che non è buona norma inserire istruzioni using negli header, dato che potrebbero dare fastidio ai .cpp che li includono; in linea di massima, quindi, almeno negli header sarebbe meglio riferirsi alle classi della libreria standard indicando esplicitamente il namespace (std::string invece di string).
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.