2013-10-07 7 views
0

Я новичок в C++, я пришел из python в C++ по какой-то причине. Я хочу создать symbol_table для компилятора, имеющего три разных метода.
Давайте рассмотрим тип будет xxxC++: Создание класса для хранения различных типов

Код что-то вроде этого:

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 быть одинаковым в обоих методах.

EDIT

Так что я мог бы легко сделать LookUp как этот

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

Сначала предоставьте информацию о том, чего вы ожидаете от xxx. – StoryTeller

+7

Я чувствую запах [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). –

+0

Какую проблему вы пытаетесь решить? Возможно, вам вообще не нужны адреса или таблицы, просто ссылки на данные. – juanchopanza

ответ

-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

Как вы можете вывести решение задач OP, если они не указали их? – StoryTeller

+1

-1: Ясно, что вы прочитали только заголовок вопроса. –

Смежные вопросы