我有两个不同的课程如下:
class text
{ };
class element
{ };
Run Code Online (Sandbox Code Playgroud)
我想将它们存储在class node:
template <typename T>
class node
{
T cargo;
std::vector<void*> children;
node(T cargo) : cargo(cargo)
{ };
void add_child(T node)
{
this->children.push_back((void*) node);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我会以这种方式调用节点存储两个,text并且element:
element div;
text msg;
node<element> wrapper(div);
wrapper.add_child(msg);
Run Code Online (Sandbox Code Playgroud)
编辑:要取回我使用的内容T typedef type;并将void指针转换为(type*).
我知道这不是很优雅也不实用,但我无法弄清楚这样做的正确方法是什么.所以请告诉我这是否实际可以接受,如果不是,那么如何以正确的方式做到这一点.
提前致谢!