是否可以创建采用任何类型变量的堆栈类?不仅仅是1种

时间:2010-07-15 15:52:57

标签: c++ stack

我见过堆栈类,它使用模板来定义堆栈保存的数据类型。如果我想要一个包含不同类型数据的堆栈怎么办?我对它有一点想法并且接近使用void指针(但是无法取消引用void指针,因此它不是正确的解决方案)所以......是否有可能拥有这样的类?

4 个答案:

答案 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 ++模板。这样,您可以设计类或函数来处理任何数据类型。