C ++:创建一个包含不同类型的类

时间:2013-10-07 15:29:21

标签: c++

我是C ++的新手,我出于某种原因从python到C ++。 我想为具有三种不同方法的编译器创建symbol_table 我们考虑一个类型为xxx

代码是这样的:

class Symbol_table
{
     public:
          //Store  an integer  to symbol table and return its address of type xxx
          xxx add_int(int  );
          //Store an string  to symbol table and return its address of type xxx
          xxx add_string(char );

          xxx lookup(int x)
          {
             //If x exist in table then return its location
          }
          xxx lookup(char x)
          {
             //If x exist in table then return its location 
          }

};

我想要的是类型xxx的返回地址在两种方法中都相同。

修改

这样我就可以像这样轻松地进行查找

Symbol_table table ;
xxx location1,location2;
location1 = table.add_int(1);
location2 = table.add_string("OBJECT");

table.lookup(1); //Should return location1 
table.lookup("OBJECT"); //should return location2

1 个答案:

答案 0 :(得分:-2)

这可以很容易地解决使用C union结构存储的打包数据类型。或者你可以使用像boost :: variant这样的东西。

typedef boost::variant<int, std::string> value_type_t;
std::vector<value_type_t> symbol_table;
value_type_t v1(100); 
symbol_table.push_back(v1);
value_type_t v2("this is a string");
symbol_table.push_back(v2);