循环中的C ++对象引用[重复]
Posted
技术标签:
【中文标题】循环中的C ++对象引用[重复]【英文标题】:C++ Object references in loop [duplicate] 【发布时间】:2011-10-29 15:15:18 【问题描述】:可能重复:C++ Object references in loop cycle
我正在尝试使用循环创建相同类型的不同对象,然后将指向每个特定对象的指针存储在链表中。 问题是,每次实例化一个对象时,它的指针都会返回相同的内存地址,这不允许我区分该列表中的每个单独的对象。
我正在尝试使用循环创建相同类型的不同对象,然后将指向每个特定对象的指针存储在链表中。问题是,每次实例化一个对象时,它的指针都会返回相同的内存地址,这不允许我区分该列表中的每个单独的对象。
有什么解决办法吗?谢谢
我有以下功能:
Data dt(10,10,2010);
int p=0;
ifstream fx;
fx.open("utilizadores.txt",ifstream::in);
if(!fx)
cout << "FX. nao existe!" <<endl;
string linha;
string nLugar;
int iD=1;
while(!fx.eof())
getline(fx,linha,'\n');
Utilizador* user;
if(linha.find(',')==-1 && linha.size()>1)
cout<<"Entrou no vector"<<endl;
string nlugar(linha.substr(0, linha.size()));
nLugar=nlugar;
else
int inic=0;
int pos=linha.find(',',inic);
string nick(linha.substr(inic,pos-inic));
pos++;
inic=pos;
pos=linha.find(',',inic);
string email(linha.substr(inic,pos-inic));
user=new Utilizador(dt,iD,nick,email);
cout<<&user<<endl;
cout<<user->clone()<<endl;
fx.close();
链表在class语句中声明
有什么解决办法吗? 谢谢
【问题讨论】:
这不应该发生,除非您在创建对象或其他错误后delete
对象。请发布示例代码,否则我们将无法提供帮助。
你是如何实例化对象的?
请输入代码。将实例变量推送到列表上很好,将指针推送到实例变量听起来很可疑..
【参考方案1】:
cout<<&user<<endl;
这不是打印对象的地址,而是指针指向对象的地址。对于任何给定的程序运行,此指针将始终位于堆栈上的相同位置,因此将产生相同的地址。
【讨论】:
【参考方案2】:你有类似的吗?
std::list<myobjecttype*> lst;
for (..).
myobjecttype* a = new myobjecttype;
lst.push_back(a);
【讨论】:
抱歉各位,我将不得不创建另一个主题,因为我似乎无法使用小评论框发布代码***.com/questions/7939832/… @user1019880:您不需要在评论框中发布它。只需编辑您的问题(问题左下角的“编辑”按钮,就在标签下方)。 抱歉,不记得编辑...以上是关于循环中的C ++对象引用[重复]的主要内容,如果未能解决你的问题,请参考以下文章