Я новичок в C++, я по какой-то причине пришел с python на C++. Я хочу создать symbol_table
для компилятора, имеющего три разных метода.
Пусть рассмотрим тип be 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
Это можно легко решить с помощью упаковочных типов данных, хранящихся в структуре 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);