Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/02/2014, 14:35
Avatar de patilanz
patilanz
 
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Copia de un objeto derivado con poliformismo

Hola tengo esta clase:

Código C++:
Ver original
  1. #ifndef LIGAPJ_HPP
  2. #define LIGAPJ_HPP
  3. #include <iostream>
  4. #include <vector>
  5. #include <string.h>
  6. using namespace std;
  7.  
  8. class lpj{
  9. public:
  10.     lpj(){};
  11.     virtual ~lpj();
  12.     virtual string getName()=0;
  13.     virtual vector<string>getEnchants()=0;
  14. };
  15. #endif


De ella derivan objetos como estos:

Código C++:
Ver original
  1. #ifndef ASHE_HPP
  2. #define ASHE_HPP
  3. #include "ligaPj.hpp"
  4.  
  5. class ashe:public lpj{
  6. public:
  7.     static const string type;
  8.  
  9.     ashe(const string);
  10.     ashe(const ashe &);
  11.     virtual ~ashe(){}
  12.     virtual string getName(){return name;}
  13.     virtual vector<string>getEnchants();
  14.  
  15.  
  16. private:
  17.     const string name;
  18.     static const vector<const string>enchants;
  19.  
  20. };
  21.  
  22. #endif

Luego tengo esta función miembro de otra clase diferente que no es importante

Código C++:
Ver original
  1. //Definicion de pj
  2. lpj *pj; //Es un miembro de una clase y es private
  3. void user::choosePj(lpj &p){
  4.     pj=&p;
  5. }

Esta funcion recibe una referencia a una clase derivada de la clase "lpj" pero el problema es que si se destruye la dirección de memoria donde apunta la referencia también se perdira en la clase que contiene choosePJ();

He pensado con el operador new pero no se puede ya que tengo que crear de nuevo el objeto y no conosco la clase que se pasa por parametro solo que deriva de lpj.

Ayuden me pls