Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:
Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro

Array punteros a objetos

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Array punteros a objetos

Notapor Trapalleiro el Vie Ene 02, 2004 7:54 pm

Hola amigos,

Tengo que crear un array de punteros a objetos, estos son objetos de clases diferentes pero que heredan todas de la misma clase base.
La finalidad es poder acceder a diferentes tablas de una base de datos de forma dinámica. Como es sabido cada tabla o conjunto de registros esta representada por una clase heredada de CRecordset, supongamos que sean por ejemplo CTablaAset,CTablaBset,...

En otros foros han intentado ayudarme pero no he conseguido la solución. La verdad empiezo a dudar si será posible hacerlo. Esto es el codigo que he implementado:

CDatabase *pDB;
pDB=new CDatabase();

CRecordset* Array[10];

Array[0]=new CTablaAset(pDB);
Array[0]->Open();
Array[1]=new CTablaAset(pDB);
Array[1]->Open();
...

...
for (int i=0;i<10;i++)
{
...
CString Cadena=Array[i]->Variable; //
...
}

El compilador me da el siguiente error:

Variable : is not a member of 'CRecordset'

lo cual me demuestra que solo reconoce las variables de la clase base CRecordset y no de sus clases hijas.

Ojala puedan ayudarme, muchas gracias.
Trapalleiro
Novato
Novato
 
Mensajes: 3
Registrado: Vie Ene 02, 2004 7:27 pm

Prueba con esto

Notapor latindeveloper el Sab Ene 03, 2004 6:41 pm

Antes de compilar este codigo, tienes que inicializar tus variables del array de la siguiente manera.

Array[0]=new CTablaUno(pDB);
Array[0]->Open();
Array[1]=new CTablaDos(pDB);
Array[1]->Open();

luego las puedes utilizar asi:


for (int i=0;i<10;i++)
{
...
CString Cadena = ((CTablaUno *)Array[i])->TuVariable;
CString OtraCadenita = ((CTablaDos *)Array[i])->TuOtraVariable; //

...
}
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor Trapalleiro el Lun Ene 05, 2004 6:09 pm

Gracias Navisoft, tu respuesta me ha solucionado el problema, se nota que eres un experto en estos temas.
Trapalleiro
Novato
Novato
 
Mensajes: 3
Registrado: Vie Ene 02, 2004 7:27 pm


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados