gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:33 28 4
gpt4 key购买 nike

我正在尝试为我的一种玩具语言模拟 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com