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)
但不知道如何使用它.
您可以使用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)
有些不直接的部分是在不知道确切类型的情况下访问值.这需要静态访问者.
如果你想知道有什么区别之间any和variant-你并不孤单,而且这里是对比图.