我正在实现一个"variant"类,它必须具有最小的内存占用并使用共享指针机制来存储一些对象。
为此,我想在类中创建一个包含所有变量类型的union,其中包括一些shared_ptr's。
operator=和复制构造函数必须更改variant的数据类型,因此切换到union中的另一个成员。当切换到shared_ptr时,应将其重置为null而不删除/释放指针。有没有办法做到这一点?
当然,还有其他实现方式,但在我的情况下它们通常更加复杂、不太安全或更消耗内存。欢迎任何建议。
谢谢!
为此,我想在类中创建一个包含所有变量类型的union,其中包括一些shared_ptr's。
operator=和复制构造函数必须更改variant的数据类型,因此切换到union中的另一个成员。当切换到shared_ptr时,应将其重置为null而不删除/释放指针。有没有办法做到这一点?
当然,还有其他实现方式,但在我的情况下它们通常更加复杂、不太安全或更消耗内存。欢迎任何建议。
谢谢!
boost::variant
。 - Bryan Chen