1

我正在尝试模仿 boost::any 对于我的玩具语言,遵循以下问题的公认答案,

访问类似于 boost::any 的类中的值

我可以有,

Element e1 = 11;
Element e2 = 12.1;

现在我想重载 + 所以我可以拥有,

e3 = e1 + e2;

但是在运行时我不知道 e1 是否会保存一个 int 或一个 double 但它会是数字。那么我该如何修改 const 以便它还保存一个变量,告诉我 Element 持有什么样的数字,以便我可以调用正确的 Get 方法。


    template /typename Datatype/
    Element(Datatype InitialValue)
    {
        StoredValue = new ValueStorage(InitialValue);
    }

我也在没有异常的微处理器上执行此操作,将 -fno-rtti 传递给编译器,并且不能使用 stdlib 或 boost。

4

1 回答 1

0

也许好奇重复的模板模式可以帮助你。这个想法是继承基类,并将模板参数设置为派生类(这是合法的,因为在class Derived写下之后,它是源中的有效标识符)。我不知道这是否比虚拟函数更稀疏的内存,但它肯定会避免它们:)。

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

于 2011-04-26T14:52:15.570 回答