我正在尝试模仿我的玩具语言的boost :: any,遵循以下问题的接受答案,
Accessing Values in a Class Similar to boost::any
我可以,
Element e1 = 11;
Element e2 = 12.1;
现在我想重载+所以我可以拥有,
e3 = e1 + e2;
但是在运行期间我不知道e1是保持int还是double,但它将是数字。 所以我如何修改const以便它还保存一个变量,告诉我什么类型的元素保持,所以我可以调用正确的Get方法。
template /typename Datatype/
Element(Datatype InitialValue)
{
StoredValue = new ValueStorage(InitialValue);
}
我也是在没有异常的微处理器上执行此操作,将-fno-rtti传递给编译器,并且不能使用stdlib或boost。
答案 0 :(得分:0)
也许Curiously recurring template pattern可以帮到你。我们的想法是继承基类,并将模板参数设置为派生类(这是合法的,因为在写下class Derived
之后,它是源中的有效标识符)。我不知道这个内存是否比虚函数更稀疏,但它确实避免了它们:)。
如果你有那么低的内存,也许你应该评估转移到另一种语言(C?)的选项,因为C ++在嵌入式系统上不是那么轻量级。