我有 2 个 C++ 类I1,I2实现整数运算;每个都针对它可以处理的整数大小进行了优化,每个都采用特定的内存大小。
我想有一些封装的高级 Integer 类I1,I2并且我可以在运行时配置(使用一些静态方法)以使其充当I1or I2。基本思想是根据她/他在运行时定义的所需算术精度,让客户使用 Integer 而不是I1or 。I2请注意,运行时考虑对我来说至关重要。
一个“自然”的选择是使用动态分配,但我有很多实例要处理(有很多临时对象)并且动态分配变得耗时。
我看了看boost::variant, I1,I2它可以满足我的需要。但是,该变体似乎具有 size max(sizeof(I1),sizeof(I2)),这对我来说是个问题,因为我需要将实例转储到具有适当大小的文件系统中。
我的问题是这样的:有没有可能定义这样一个 Integer 类:
- 在一些运行时配置之后使用
I1或实现I2 - 使用堆栈而不是堆(无动态分配)
- 仅使用所需的内存(
sizeof(I1)如果I1使用,sizeof(I2)如果I2使用),而不是两种大小中的最大值。