实现类似于类的提升

时间:2011-04-26 13:51:35

标签: c++ boost boost-any

我正在尝试模仿我的玩具语言的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。

1 个答案:

答案 0 :(得分:0)

也许Curiously recurring template pattern可以帮到你。我们的想法是继承基类,并将模板参数设置为派生类(这是合法的,因为在写下class Derived之后,它是源中的有效标识符)。我不知道这个内存是否比虚函数更稀疏,但它确实避免了它们:)。

如果你有那么低的内存,也许你应该评估转移到另一种语言(C?)的选项,因为C ++在嵌入式系统上不是那么轻量级。