C ++: создание класса для содержания различных типов

0

Я новичок в 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
Теги:

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);
  • 0
    Как вы можете определить решение ОП, если они не указаны?
  • 1
    -1: Понятно, что вы читаете только заголовок вопроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню