谁在运行时制作变量(在c ++中)

时间:2011-05-16 12:25:04

标签: c++

我想让程序的用户定义变量,然后对它们进行数学运算,如“定义a:整数,b:双精度”,然后“打印a * b”

我发现我可以使用“boost any”但我需要动态识别变量的类型,因为想要使用类的变量(对象).... 所以我想使用该类

中定义的操作(+ * ...)

这就像我想制作一个不同类型的容器,但是当我在这个容器中使用物品时 后来我使用为这个项目类型定义的操作!

提前致谢

5 个答案:

答案 0 :(得分:2)

这是不可能的,因为当C ++编译代码时,它会丢失代码中的大部分信息,比如函数名和变量类型。它知道它们在编译的那一刻,并且它产生的机器代码可以执行代码所说的内容,但最终它们都被丢弃了。 (好吧,不完全正确,但接近于此。)

因此,如果要评估用户输入的表达式,则需要在自己的代码中进行大量解析。也许另一种具有“eval”语句的动态语言在这里会更有用吗?

已添加:推荐语言:Javascript。因为您可以在任何您喜欢的平台上在浏览器中使用它。

答案 1 :(得分:1)

来自评论:

  

为什么选择C ++?为什么不是一种已经提供动态类型和运行时评估的语言? -

     

所以你建议用什么语言的人?

Python

答案 2 :(得分:1)

如果你必须使用c ++,我建议嵌入一个动态脚本语言。所有人都会想到Python,Lua和Javascript。

你可以做你想做的所有事情并且仍然将代码编译成.exe。

答案 3 :(得分:0)

我认为在算术运算期间输入和查询define命令时,您需要创建和更新一些正在更新的符号表。通常,您不需要存储任何类型的值,您可以假设一组有限的可能值类型(整数,实数等)并在表中表示它。就个人而言,我会为每个值类型创建一个具有特定操作的类,该类型是从公共基础派生的,引用将存储在符号表中。

答案 4 :(得分:0)

最好的方法是使用Polymorphism in C++