Múltiples tipos de datos dentro de un vector de punteros utilizando plantillas
Tengo dos clases que se muestran a continuación:
template <typename t=""> class node {
public:
int NodeID;//ID utilizado para identificar el nodo al insertar/eliminar/buscar
T data;//datos genéricos encapsulados en cada nodo.
std::vector<><em>> children;//nodos hijo, lista de punteros
std::vector<></em>> parents;//nodos padre, lista de punteros
};
template<typename t=""> class DAG {//Clase para el grafo
std::vector<><t>*> Nodes;//Vector de punteros a nodo, así es como definimos un DAG;
}
}
Me preguntaba si es posible, utilizando plantillas, tener un vector de nodos que contenga nodos de múltiples tipos. Algo como esto.
std::vector<node*> Nodes = {node<int>*,node<string>*, ...}
</node*>
davy.ai
Como la clase
node
es una clase de plantilla, se puede instanciar para cualquier tipoT
. Sin embargo, una vez instanciada, se convierte en una clase concreta con un tipo específico para la variable miembrodata
. Por lo tanto, unstd::vector
denode
s tendría que tener un tipo específico para su variable miembrodata
y no puede contener nodos de varios tipos.En otras palabras, la siguiente línea no se compilaría:
En su lugar, tendrías que usar un
std::vector
separado para cada tipo denode
.</node*>