Si hago lo de Rector::toString me da este error: una referencia de miembro no estatico debe ser relativa a un objeto especifico
Rector:
Código:
#ifndef RECTOR_H
#define RECTOR_H
#include<string>
#include<sstream>
#include <iostream>
using namespace std;
class Rector{
private:
string nom_Rector;
string periodo;
public:
Rector () {
nom_Rector="";
periodo="";
cout<<"Se ha creado un nuevo Rector"<<endl; }
~Rector() {cout<<"Se ha destruido Rector"<<endl; }
void setNom_Rector(string n) { this->nom_Rector= n; }
string getNom_Rector() { return (this->nom_Rector); }
void setPeriodo(string x) { this->periodo= x; }
string getPeriodo() { return this->periodo; }
// defina el método toString()
string toString(){
stringstream s;
s<<"Nombre del Rector: "<<nom_Rector<<endl;
s<<"Perido: "<<periodo<<endl;
return s.str();
}
};
#endif
Escuela:
Código:
#ifndef ESCUELA_H
#define ESCUELA_H
#include "Rector.h"
using namespace std;
class Escuela{
private:
string nombre_Escuela;
int capacidad;
Rector *rect; //implementación de la relación
public:
Escuela() {
cout<<"Se ha creado una Escuela"<<endl;
}
Escuela(string nombre, string ubicacion, int capacidad)
{
this->nombre_Escuela= nombre;
this->capacidad=capacidad;
cout<<"Se ha creado un Escuela"<<endl;
}
string getNombre_Escuela(){
return this->nombre_Escuela;
}
int getcapacidad(){
return this->capacidad;
}
Rector* getRector () {
return (this->rect);
}
void setNombre_Escuela( string n){
this->nombre_Escuela= n;
}
void setcapacidad( int c){
this->capacidad= c;
}
void setRector (Rector* p) {
this->rect=p;
}
~Escuela() {cout<<"Se ha destruido "<<nombre_Escuela<<endl;}
string toString(){
stringstream s;
s<<"Nombre de la Escuela: "<<nombre_Escuela<<endl;
s<<"capacidad: "<<capacidad<<endl;
s<<Rector::toString();
return s.str();
}
};
#endif
Edit:
Lo que acabo de hacer es poner el contructor con parametros de escuela como debe ser, le puse un rector y parece que ahi ya se soluciona el problema... En el main creo un rector y luego la escuela con ese rector en el constructor por parametros... ahi si me funciona el toString...
Y con respecto al main, para reflejar la relacion, deberia destruir los objetos por aparte o solo escuela?
Código:
Rector *rec = new Rector();
rec->setNom_Rector("Manuel");
rec->setPeriodo("2006-2010");
Escuela *p = new Escuela("Escuela",50000,rec);
cout<<p->toString();
delete p;
delete rec;