Newsgroup: it.comp.lang.c++
Titolo: Ci riprovo!!

Ciao a tutti, 3 giorni fà avevo postato l'esercizio di un libro che stò 
studiando (deitel & deitel) ; nn riesco a capire dove sbaglio...praticamente 
dice di aggiungere un dato membro che rappresenti il nome di un docente e 
modificare il costruttore specificando due parametri: uno per il corso e uno 
per il docente....il problema è che sono all'inizio e a questo punto del 
libro, senza aiuto nn riesco ad andare avanti...il compilatore (dev c++) mi 
dà sempre:
  [Linker error] undefined reference to `GradeBook::GradeBook(std::string)'
..mi dite come procedere??
Grazie in anticipo
Alex
Di seguito riporto i file necessari (GradeBook.h;GradeBook.cpp;Quaderno.cpp)
*******GradeBook.h*********
#include <string>
using std::string;
class GradeBook
     {
     public:
     GradeBook (string,string);
     void setNomeCorso(string);
     void setNomeDocente (string);
     string getNomeCorso();
     string getNomeDocente();
     void MostraMessaggio();
     private:
             string nomeCorso;
             string nomeDocente;
     };
*********GradeBook.cpp************
//GradeBook.cpp
//Implementazione della classe Gradebook
#include <iostream>
using std::endl;
using std::cout;
#include "GradeBook.h" //Inclusione della definizione della classe GradeBook
GradeBook::GradeBook(string name,string name1)
{
                            setNomeCorso (name);
                            setNomeDocente (name1);
                            }
//funzione per la convalida del nome del corso
void GradeBook::setNomeCorso (string name)
{
     if (name.length()<=25 )
     nomeCorso=name;
     if (name.length() > 25)
     {
                       nomeCorso=name.substr(0,25);
     cout << "Il Nome\"" << name <<"\" è più lungo di 25 
caratteri.\n"<<"sarà troncato al 25esimo carattere\n"<<endl;
     }//Fine if
     }//fine setNomeCorso
     //Funzione per il nome del docente!
//Legge il nome del corso
string GradeBook::getNomeCorso()
{
       return nomeCorso;
       }//Fine getNomeCorso
void GradeBook::setNomeDocente (string name1)
{
     if (name1.length()<=25 )
     nomeDocente = name1;
     if (name1.length() > 25)
     {
                       nomeDocente=name1.substr(0,25);
     cout << "Il Nome\"" << name1 <<"\" è più lungo di 25 
caratteri.\n"<<"sarà troncato al 25esimo carattere\n"<<endl;
     }//Fine if
     }//fine setNomeDocente
//Legge il nome del docente!
string GradeBook::getNomeDocente()
{
       return nomeDocente;
              }//Fine getNomeDocente
//Messaggio di Benvenuto
void GradeBook::MostraMessaggio()
{
     cout << "Benvenuti nel registro per il corso\n" << getNomeCorso()  << 
"!!" <<endl;
     cout << "Il Nome del docente è:\n" << getNomeDocente() << "!!" <<endl ;
     }
*********Quaderno.cpp*********
//Main del GradeBook!
#include <iostream>
using std::cout;
using std::endl;
#include "GradeBook.h"
int main()
{
    //creazione di due oggetti GradeBook
    GradeBook gradebook1 ("CS101 Introduzione alla programmazione in c++");
    GradeBook gradebook2 ("pippo");
    //Visualizzazione iniziale
    cout << "Il nome del corso iniziale è: " <<gradebook1.getNomeCorso()
    <<"\n Il docente è: " << gradebook2.getNomeDocente() << endl;
    //Modifica del nome per stare dentro i 25 caratteri
    gradebook1.setNomeCorso( "CS101 Programmare in C++" );
    gradebook2.setNomeDocente("Alex ");
    cout << "Il nome del corso iniziale è: " <<gradebook1.getNomeCorso()
    <<"\n Il docente è: " << gradebook2.getNomeDocente() << endl;
    system ("PAUSE");
    return 0;
}

     GradeBook gradebook2 ("pippo");
...quindi qui devi passargli due parametri.
Ciao,
Nicola


Haaa, quindi se voglio specificare due parametri nn devo creare un altro 
oggetto ma scrivere semplicemente :
GradeBook gradebook1 ("CS101 Introduzione alla programmazione in 
c++","Alex");
giusto?
Alex

Si.
Ciao,
Nicola