原始指针,但现代方式



我的项目中必须有一个语义堆栈,它将容纳多种类型。
我的目标是让我的项目使用现代C++
使用任何类型的堆栈的正确方法是什么
java中的等效版本是Stack<Object>
以下哪项是正确的?

  1. 使用void*并将其强制转换为我想要的类型
  2. 有点像1,但使用了一些智能指针。(我不知道是什么(
  1. std::any用于存储任何类型的对象(可能存在限制(

然而,存储任何类型的整个设计都很少是理想的。通常,最好使用可变模板来保持多态性完全在编译时,或者只有一组有限的类型(std::variant(,甚至使用OOP层次结构。哪个更合适取决于用例。

void*指针是一种纯C的东西,在C++中已经过时。在为对象/变量/成员动态分配内存时,可以使用智能指针(如unique_ptr或shared_ptr(。不要在智能指针对象中包装某些不是您创建的API指针对象。当您将参数传递到函数中并且需要避免复制对象时,最好使用引用而不是指针。但是,您可以在C++中使用原始指针,但不建议这样做。

最新更新