Usuário com melhor resposta
É possível criar uma lista de objetos que possuem apenas a classe Base em comum?

Pergunta
-
Primeiramente, como o próprio titulo diz, é possível criar uma lista de objetos que possuem apenas a classe base em comum?
Se for possível alguem pode me dizer como posso fazer isso, por exemplo, nas classes abaixo?
#include <iostream>
Qualquer ajuda é bem vinda, Obrigado.
using namespace std;
class Base
{
public:
virtual void Handler() { cout << "HANDLER BASE CHAMADO" << endl; };
};
class DerivadaA : public Base
{
public:
void Handler() { cout << "HANDLER A CHAMADO" << endl; };
};
class DerivadaB : public Base
{
public:
void Handler() { cout << "HANDLER B CHAMADO" << endl; };
};
EDIT: Não sei se minha dúvida ficou muito clara então vou tentar esclarecer ela...
Eu vou ter varios objetos das classes DerivadaA e DerivadaB e quero coloca-los em uma lista, mas a unica coisa em comum entre eles é que eles são derivados da mesma classe Base. É possível criar essa lista utilizando essa caracteristica deles? Se não, alguem sabe outro meio de solucionar esse problema? Obrigado novamente.- Editado Iuri Castro domingo, 1 de novembro de 2009 20:07 esclarecer o problema
Respostas
-
O meu problema foi resolvido utilizando Upcasting:
Base **list = new Base*[3];
list[0] = new DerivadaA();
list[1] = new DerivadaB();
list[2] = new Base();
Devo agradecimentos a gelo e webton do forum UniDev (www.unidev.com.br) que rapidamente resolveram meu problema.
Obrigado pelo tempo de todos.
- Marcado como Resposta Iuri Castro domingo, 1 de novembro de 2009 20:39
Todas as Respostas
-
O meu problema foi resolvido utilizando Upcasting:
Base **list = new Base*[3];
list[0] = new DerivadaA();
list[1] = new DerivadaB();
list[2] = new Base();
Devo agradecimentos a gelo e webton do forum UniDev (www.unidev.com.br) que rapidamente resolveram meu problema.
Obrigado pelo tempo de todos.
- Marcado como Resposta Iuri Castro domingo, 1 de novembro de 2009 20:39
-
eu tenho uma pergunta para deixá-lo intrigado..
imagine uma classe base com a função Handler(..), como voce especificou.
As duas classes Derivadas também.
Agora uma outra classe, SuperDerivada, ela irá ter herança múltipla, herdando das duas classes Derivadas, e ela não irá escrever a função Handler(..).
Ao percorrer sua lista, voce chama
pBase->Handler(..);
Qual dos dois Handlers(..) será chamado??
Como tratar esse caso??
;)
Abraços,
cox
cox