我不确定这个问题是否超出了主题范围,但是如果是,请告诉我在哪里可以提出这个问题,我会做的。
C ++标准:
我正在使用C ++ 03/11标准(不是我的选择,所以我不能选择更高的东西)
我想做什么:
我正在尝试创建一个向量(或任何容器)来容纳未知数量的元素,而且每个元素都可能是不同的类型。
我已经尝试过的内容:
问题:
在这两种情况下,我都有相同的问题,那就是对存储元素的访问。
-说明:-
Varinat:
typedef boost::variant<int, string, bool> myvar;
int main() {
std::vector<myvar> vec;
vec.push_back("hello");
string s = boost::get<string>(vec[0]);
cout << s;
}
任何:
typedef boost::any any;
int main() {
std::vector<any> vec;
vec.push_back("hello");
string s = boost::any_cast<string>(vec[0]);
cout << s;
}
在尝试获取any_cast<type>
或get<type>
时,我需要指定变量的类型
我要做什么:
如果可能的话,我想做这样的事情:
int main() {
std::vector<ANY_TYPE> vec;
vec.push_back("hello"); //string
vec.push_back(1); //int
vec.push_back(new Object); //a class
auto s = vec[0];
自动应为具有该值的类型,例如,在这种情况下,应为 STRING ,或者如果我将其称为 vec [2] < / strong>应该是对象 }
是否存在我不知道谁可以帮助我解决此问题的库或功能?如果是这样,请告诉我。