【发布时间】:2016-10-05 16:52:14
【问题描述】:
我正在开发一个 C++ 项目,并试图弄清楚如何制作一个“动态”变量。
在 Python 中,变量可以有多种类型:
variable = 0
variable = "Hello"
在 Java 中,这也是(在某种程度上)可以实现的:
Object o = 0;
o = "Hello";
从我能找到的与 C++ 相关的内容来看,那里没有 object 类型或“动态”对象。
我需要这个的原因是我正在尝试创建一个接受以下任何类型的对象:
int、float、char、string、bool,并允许我进行如下操作:
object o = 0; // currently an int
o -= 2.5; // now a float
o += "Test"; // now a string
这种变量是否有任何默认功能?如果没有,可以用宏、struct's 等来完成吗?
我发现了这样的事情:
template <typename name>
但是不知道怎么用。
【问题讨论】:
-
C++17 将有
std::any这正是你想要的。现在,您可以使用boost::any或推出您自己的实现。然而,这并不是动态的,确切地说。 -
@user2296177 我正在使用 C++11 并希望(但如果不可能,我很乐意放弃支持)具有向后兼容性。我对C++没用,你能给我举个例子吗?我不知道从哪里开始......
-
您始终可以创建一个类,该类将包含您想要支持的所有类型的向量,然后为其添加一个接口。但从表面上看,这在可维护性和可读性方面似乎是一个非常糟糕的主意。我会考虑非常努力地实施这样的事情,并尝试提出一个完全不同的解决方案。
-
@mirosval 我一直在考虑这样做,但后来我可能需要为无限数量的对象类型扩展它。
-
为什么首先需要为变量分配不同的类型?
标签: python c++ types type-safety strong-typing