c++ - 实现 boost 任何类似的类(class)

标签 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,以便它还保存一个变量,告诉我 Element 持有什么样的数字,以便我可以调用正确的 Get 方法。


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

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

最佳答案

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

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

关于c++ - 实现 boost 任何类似的类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791359/

相关文章:

c++ - 自定义文字适用于 long double 但不适用于 double,并且适用于按值传递但不按引用传递

c++ - 如何将事件监听器/信号添加到简单的超人类?

c++ - boost::bind 返回一个函数对象,它是需要指针的函数的参数

C++:如何将 std::less<int> 与 boost::bind 和 boost::lambda 一起使用?

c++ - boost::any 是可移动的吗?

c++ - 为什么在使用 operator class_name() & c 样式转换时 g++ 会出现错误

c++ - 在 C++ 中创建随机无向图

c++ - 打印时如何格式化文件内容,使文件内容居中显示?

c++ - C++中如何根据参数的值返回不同的类型?

c++ - 类型转换指针