C++中的Python风格变量

Fin*_*ent 3 c++ python types strong-typing type-safety

我正在研究一个C++项目,并试图弄清楚如何制作一个"动态"变量.

在Python中,变量可以有多种类型:

variable = 0
variable = "Hello"
Run Code Online (Sandbox Code Playgroud)

在Java中,这也是(有些)可以实现的:

Object o = 0;
o = "Hello";
Run Code Online (Sandbox Code Playgroud)

从我能找到的与C++相关的内容中,没有object类型或"动态"对象.

我需要这样的原因,是我试图创建一个对象这需要在以下任一类型: int,float,char,string,bool,和让我做操作,如:

object o = 0; // currently an int
o -= 2.5; // now a float
o += "Test"; // now a string
Run Code Online (Sandbox Code Playgroud)

这种变量有默认功能吗?如果没有,可以用宏struct,等等吗?

我发现了这样的事情:

template <typename name>
Run Code Online (Sandbox Code Playgroud)

但不知道如何使用它.

bob*_*bah 7

您可以使用boost.variant库.这里的基本用法说明.简而言之,它就像是

using var_t = boost::variant<bool,int,double,string, boost::blank_t>;
var_t var = "hello";
std::cout << boost::get<std::string>(var) << '\n';
std::cout << var << '\n'; // if all possible stored types are streamable
Run Code Online (Sandbox Code Playgroud)

有些不直接的部分是在不知道确切类型的情况下访问值.这需要静态访问者.

如果你想知道有什么区别之间anyvariant-你并不孤单,而且这里是对比图.