C++在编写脚本语言时如何处理类类型
C++ how to handle class types when writing a scripting language
我被这个问题困扰了一段时间,尽管我相信它可能很简单。我正在用c++编写一种简单的编程语言,但我无法找到在我的语言中处理变量类型的最佳方法。
例如,我可能有八种不同的变量类型,包括字符串、数字、布尔、表等!我需要知道在c++中存储这些的最佳方法,因为它们都是不同的类型,这意味着所有不同的类!不过,我会有八种以上的类型。该代码使用编译器基于行。请帮忙!
通常,您希望使用一种被称为"类型装箱"的技术。例如,PHP使用了以下内容(更像C语言):
enum class ScriptVarType {
STRING,
NUMBER,
};
struct ScriptVar {
ScriptVarType type;
union {
std::string str;
int num;
};
};
如果所有类型都是类,也可以使用派生类。它们可以共享一个ScriptVar
基类,您可以使用RTTI(或类似的)来获得实际类型,例如ScriptVarString
。
用户可定义的类型只需要有成员就可以定义所有用户部分。
相关文章:
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 为什么 GCC 在使用类型别名时处理 const reinterpret_cast不同?
- 像union_这样的 Boost.Geometry 操作如何处理浮点类型的基本不精确性?
- 模板函数如何处理可能共享一个交集的多个类型名称?
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 如何处理模板类中的复合类型
- C++在一个映射中存储不同的指针类型(并处理销毁)
- 如何在C库中处理与C++不同大小的类型
- 如何处理具有无效数据类型的异常
- 处理一般情况混合类型和非类型的可变参数模板
- 类型不可知的抽象以使用相同的运行时接口处理正向和反向迭代器和范围?
- 如何在Boost::program_options配置文件中为非字符串的自定义选项值类型处理空格
- 我可以让返回类型自动处理具有相同签名但捕获不同内容的 lambda 吗?
- 如何处理高于 7FF.. 64 位和uint64_t类型的十六进制值
- 处理类型结构数组
- 我应该如何处理类型而不是方法的多重继承冲突
- 如何在SQLite中处理Blob时处理类型错误
- 如何重写模板化函数来处理类型推断