循环中的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 ++对象引用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

出现$ref的解决原因

c 中的引用类型在delphi中如何使用

【OC梳理】循环引用及解决

javascript中的循环引用对象处理

简单聊一聊JS中的循环引用及问题

C ++通过引用返回本地对象[重复]