coleccion de colecciones heterogeneas :s

nmxnmx
27 de Octubre del 2005
Hola soy nuevo en C++ y he estado tratando de hacer lo que el titulo de este post dice pero no lo he conseguido :s, estoy tratando de hacer una tabla como esta:

| field1 | field2 | field3 | field5 |
---------------------------------------------------
| (int) | (float) | (char) | (double) |
| (int) | (float) | (char) | (double) |
.
.
.
| (int) | (float) | (char) | (double) |

Donde la tabla no es estatica, es decir, el numero de campos (fields) son variables (field1, field2... fieldn) y el numero de valores de cada campo pueden ser variables o fijos...

Para implementar esto, yo pense en un vector de vectores :s... Hice una clase llamada Fields donde uno de los miembros es para el nombre del campo y otro es un vector para los valores que almacenara ese campo..
Tambien hice otra clase para que contenga esos campos (fields), la clase se llama Table, la cual entre otros miembros contiene un vector de "Fields"..

El problema es que hice la clase Field como una "template class" para que pudiera tener un vector de valores de cualquier tipo de datos
Pero en la clase Table no puedo solo declarar algo como: "vector<Fields> fields" por que obtengo un error, asi que tengo que poner: "vector< Fields<type > >", asi que tengo que declarar a la clase Table como "template class" para que pueda poner el vector de campos ahi: "vector< Fields<T> > fields"... pero el problema real es cuando quiero usar esas clases.. por ejemplo si quiero si quiero declarar una nueva tabla necesito hacer algo como: "Table<type> table;" pero el problema es que no puedo poner un tipo de datos porque se supone que la tabla debe aceptar cualquier tipo de datos...

Espero que me hayan entendido y que me puedan ayudar.. gracias de antemano

kike
27 de Octubre del 2005
No se si te acabao de entender, pero creo que no necesitas usar una template, solo declara la clase con los cuatro miembros que necesitas y luego crea el array que necesites de objetos de tu clase, asi tendras en cada posicion del array los cuatro campos, int, float,char y double.
Si lo que quieres es solo tener un campo habilitado en cada fila, en lugar de una clase, puedes usar una union...
No se si es lo que preguntabas, pero espero que te sirva.