0

实际上,我是 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
4

1 回答 1

-2

这可以很容易地解决打包使用 C 联合结构存储的数据类型。或者你可以使用一些花哨的东西,比如 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);
于 2013-10-07T15:45:13.673 回答