gpt4 book ai didi

c++ push_back 无法正常工作

转载 作者:行者123 更新时间:2023-11-27 22:30:30 26 4
gpt4 key购买 nike

我有一个 symbol_table 类,它有另一个类 row_st 的对象 vector 。我还有一个 enter 方法,将带有传递名称的 row_st 对象插入到所需 symbol_table 的 vector 中。但是当我调用 enter 来输入对象时名称:a;b;c;我会得到如下结果:a,b,c;b,c;c.vector的第一个元素得到所有输入对象的名称。第二个元素也获取后面条目的名称。

  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 元素都指向相同的地址。new 调用每次调用时都生成相同的 row_st。我该怎么办?

最佳答案

你不能像那样使用字符指针——你需要为它们分配存储空间。但是当您使用 C++ 时,您应该删除它们并将它们替换为 std::string 类的实例,该类将为您管理存储。

关于c++ push_back 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com