【发布时间】:2013-11-19 01:21:42
【问题描述】:
我知道 void 指针,它们可以指向任何类型的对象。因此,如果我想要一个包含存储未知类型数据的元素的链表,我可以使用void*:
struct Node {
Node* next;
void* data;
};
但是如果我不想使用指针但我仍然不知道Node 将携带什么类型的数据怎么办?有没有办法让data 没有特定类型?我尝试了auto,但它不起作用,因为它需要立即推导出一个初始化程序。
【问题讨论】:
-
您是否已经考虑过基于模板的解决方案??
-
您想要
void的哪些方面?只是指向您选择的类型(可能在运行时确定)的能力还是阻止其他人取消引用该类型的能力?模板是获得第一个的一种方式。 -
你想要链表的每个元素的数据类型相同还是不同?在第一种情况下使用模板,在第二种情况下使用联合(在这种情况下,您必须单独存储有关数据类型的信息)
标签: c++ void-pointers