我见过堆栈类,它使用模板来定义堆栈保存的数据类型。如果我想要一个包含不同类型数据的堆栈怎么办?我对它有一点想法并且接近使用void指针(但是无法取消引用void指针,因此它不是正确的解决方案)所以......是否有可能拥有这样的类?
答案 0 :(得分:2)
您可以拥有一堆boost::any
个值。
答案 1 :(得分:1)
此处列出了从最安全到最难管理的各种选项
boost::variant
(假设您事先知道所有类型)boost::any
(非常难以采取行动,因为任何事情都可以在那里......)void*
(再次非常困难且存在内存管理问题)拿起你想要的那个。
答案 2 :(得分:0)
无法取消引用void指针,当然,你仍然可以将void指针强制转换为你需要的实际指针类型,然后取消引用它。
void *ptr = malloc(10);
*ptr = 10; // won't work
*((int *)ptr) = 10; // will work
答案 3 :(得分:0)
你应该看一下C ++模板。这样,您可以设计类或函数来处理任何数据类型。