谁在运行时创建变量(在 C++ 中)
who to make variables during run-time (in c++ )
我想让我的程序的用户定义变量,然后对它们进行数学运算,如"定义a:integer,b:double"然后"打印a*b"
我发现我可以使用"boost any",但我需要动态识别变量的类型,因为想使用类的变量(对象)....所以我想使用该类中定义的操作 (+* ...)
这就像我想制作一个不同类型的容器,但是当我使用这个容器中的物品时稍后我使用为此项目类型定义的操作!
提前致谢
这是不可能的,因为当C++编译代码时,它会丢失代码中的许多信息,例如函数名称和变量类型。它在编译的那一刻就知道它们,它生成的机器代码可以按照你的代码说去做,但最终它都被丢弃了。(好吧,不完全正确,但接近于此)。
因此,如果要评估用户输入的表达式,则需要在自己的代码中进行大量分析。也许另一种具有"eval"语句的动态语言在这里会更有用?
增加:建议语言:Javascript。因为您可以在浏览器中在您喜欢的任何平台上使用它。
从评论:
为什么C++?为什么不是已经提供动态类型和运行时评估的语言?–
那么你建议伙计们用什么语言?
蟒。
如果你必须使用c ++,我建议嵌入一种动态脚本语言。Python,Lua和Javascript都会浮现在脑海中。
您将能够做您想做的所有事情,并且仍然可以将代码编译为.exe。
我认为您应该创建和更新一些在算术运算期间输入和查阅定义命令时正在更新的符号表。通常,您不需要存储任何类型的值,您可以假设一组有限的可能值类型(整数,实数等)并在表中表示它。就我个人而言,我会为从公共基派生的每个值类型创建一个具有特定操作的类,引用将存储在符号表中。
最好的方法是在C++中使用多态性
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 执行函数时导致崩溃的变量
- 变量没有改变?通过向量的函数调用