У меня есть класс symbol_table, в котором есть вектор объектов другого класса row_st. Также у меня есть метод enter, где вставляются объекты row_st с переданным именем в вектор требуемого symbol_table.but, когда я вызываю enter для ввода объектов с именем:
a; b; c; я получу следующий результат: a, b, c; b, c; c. первый элемент вектора получает имя всех введенных объектов. и второй элемент также получает имя более поздних записей.
class row_st
{
public:
char* name;
type_u type;//int:0,flaot:1;char:2,bool:3,array:
int offset;
symbol_table *next;
symbol_table *current;
};
class symbol_table
{
public:
vector <row_st *> row;
int type;
int header;
int starting_stmt;
int index;
int i;
symbol_table *previous;
symbol_table(){ header=0;
previous=0; index=0;i=0;starting_stmt=0;}
};
и вот метод ввода:
int enter(symbol_table *table,char* name,type_u type){
row_st *t=new row_st;
t->name=name;
t->type=type;
t->offset=table->index;
t->current=table;
table->index++;
t->next=0;
table->row.push_back(t);
table->header +=1;
return table->row.size()-1;
}
все элементы push_backed указывают на один и тот же адрес. Новый вызов делает один и тот же row_st каждый раз, когда он вызывается. Что мне делать?