存储不同类型的变量

时间:2016-10-31 22:02:00

标签: c++ arrays variables 2d

我正在努力寻找解决问题的方法。我在Game Maker中看到一个名为ds_grid的东西,它类似于动态2D数组,但每个字段都可以包含不同类型的变量。

您可以按索引获取值,例如ds_grid_get(mygrid,row,column)。我需要类似的东西,但却无法找到任何可以保持不同类型的东西,但它们不是动态的,反之亦然。

这是什么解决方法?

1 个答案:

答案 0 :(得分:0)

“类似,但有些不同”,这意味着有一个共同的基类(或者你应该创建一个基类)。您可以创建一个基类指针容器,它可以容纳任何派生类型。如果没有公共基类,则可以使用boost::variant在一个容器中存储不同类型。

 // Example program
#include <iostream>
#include <string>
#include "boost/variant.hpp"

int main()
{
  std::vector<boost::variant< int, std::string > > w = {"as", 12};
  std::cout << w[0] <<std::endl;
  std::cout << w[1] <<std::endl;
}