我是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
答案 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);