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