循环周期中的C ++对象引用

时间:2011-10-29 15:37:31

标签: c++ object pointers loops

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

任何解决方案?感谢

我有以下功能:

    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();
    }

链接列表在类声明

中声明

3 个答案:

答案 0 :(得分:3)

cout<<&user<<endl;

应该是:

cout<<user<<endl;

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

答案 1 :(得分:2)

这一行

cout<<&user<<endl;

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

cout<<user<<endl;

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

答案 2 :(得分:1)

&#34;&安培;用户&#34;返回指针的地址,包含对象的引用。