Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/10/2014, 10:43
newb
 
Fecha de Ingreso: marzo-2014
Mensajes: 41
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: toString en relacion agregacion?

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;

Última edición por newb; 29/10/2014 a las 10:55