【问题标题】:C++ Object references in loop cycle循环周期中的 C++ 对象引用
【发布时间】:2011-12-17 21:32:31
【问题描述】:

我正在尝试使用循环创建相同类型的不同对象,然后将指向每个特定对象的指针存储在链表中。问题是,每次实例化一个对象时,它的指针都会返回相同的内存地址,这不允许我区分该列表中的每个单独的对象。

有什么解决办法吗?谢谢

我有以下功能:

    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语句中声明

【问题讨论】:

    标签: c++ object pointers loops


    【解决方案1】:

    "&user" 指针的返回地址,包含对对象的引用。

    【讨论】:

      【解决方案2】:

      这一行

      cout<<&user<<endl;
      

      打印指向对象的指针的地址。 user 本身就是一个指向您正在创建的对象的指针。要打印你的对象的地址,你的意思是写

      cout<<user<<endl;
      

      虽然每次都会是一个新对象,但变量user 总是在同一个地方。您可以将user的值添加到您的列表中,确实每次都不一样。

      【讨论】:

      • 我如何添加用户的价值?能举个例子吗?
      • 对不起,我没听懂你的回答,英语不是我的母语...我不能按值传递,它必须抛出一个指针或内存引用
      • 你似乎没有在任何地方添加任何东西到列表中,所以我不能准确地告诉你;但是如果你添加“用户”,那实际上就可以了。不要添加“&user”。
      【解决方案3】:
      cout

      应该是:

      cout

      &user 是局部变量 Utilizador* 的地址,它保持不变。用户变量值本身就是你需要的指针,每次迭代都应该不同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-15
        • 1970-01-01
        • 2017-08-04
        • 2011-06-19
        • 2021-12-09
        • 1970-01-01
        相关资源
        最近更新 更多