Salve Ragazzi,
non capisco perchè mi dia questi errori..
codice:
[root@root Esame1]# g++ MailServer.cpp User.cpp main.cpp
/tmp/ccU2q7ZU.o: In function `User::NM(User&)':
User.cpp:(.text+0x1f5): undefined reference to `Message::Message()'
User.cpp:(.text+0x225): undefined reference to `Message::setmess(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
/tmp/ccU2q7ZU.o: In function `User::MostraRicevuti()':
User.cpp:(.text+0x318): undefined reference to `Message::print() const'
/tmp/ccU2q7ZU.o: In function `User::MostraInviati()':
User.cpp:(.text+0x38c): undefined reference to `Message::print() const'
collect2: ld returned 1 exit status
#ifndef USER_H
#define USER_H
#include <iostream>
#include <string>
#include <vector>
#include "Message.h"
using namespace std;
class User{
public:
User();
User(string,string,string);
void NM(User&);
void MostraRicevuti();
void MostraInviati();
string& getnome();
~User();
private:
string nick, nome, cognome;
vector <Message> inviati, ricevuti;
};
#endif
#include "User.h"
User::User(){}
User::User(string a, string b, string c):
nick (a), nome(b), cognome(c){;}
void User::NM(User& a){
Message nuovo;
string d7;
getline (cin,d7);
nuovo.setmess(d7);
nuovo.dest=a.nome;
nuovo.mitt=nome;
inviati.push_back(nuovo);
a.ricevuti.push_back(nuovo);
}
void User::MostraRicevuti(){
for (vector <Message>::iterator iter=ricevuti.begin(); iter!=ricevuti.end(); iter++){
iter->print();
}
}
void User::MostraInviati(){
for (vector <Message>::iterator iter=inviati.begin(); iter!=inviati.end(); iter++){
iter->print();
}
}
string& User::getnome(){
return nome;
}
User::~User(){cout<<"Utente eliminato"<<endl;}
#ifndef MESSAGE_H
#define MESSAGE_H
#include <string>
#include <vector>
#include <iostream>
#include "User.h"
using namespace std;
class Message{
public:
friend class User;
Message();
void setmess(string&);
void print()const;
private:
string mitt, dest, mess, timestamp;
};
#endif
#include "Message.h"
Message::Message():
mitt("-"), dest("-"), mess("-"), timestamp ("-"){;}
void Message::print()const{
cout<<"Mittente:"<<mitt<<endl;
cout<<"Destinatario:"<<dest<<endl;
cout<<"Messaggio:"<<mess<<endl;
cout<<"Timestamp:"<<timestamp<<endl<<endl;
}
void Message::setmess(string& a){
mess=a;
}
Mentre se provo a includere tutti i file header mi dice:
[root@root Esame1]# g++ MailServer.cpp User.cpp main.cpp
In file included from Message.h:7,
from User.h:6,
from User.cpp:1:
MailServer.h:17: error: ‘User’ was not declared in this scope
MailServer.h:17: error: template argument 1 is invalid
MailServer.h:17: error: template argument 2 is invalid
MailServer.h:18: error: ‘Message’ was not declared in this scope
MailServer.h:18: error: template argument 1 is invalid
MailServer.h:18: error: template argument 2 is invalid
Why???