2011-10-29 45 views
0

我試圖用循環創建同一類型的不同對象,然後存儲一個指向鏈表中每個特定對象的指針。問題是,每當一個對象是instanciate時,它的指針會返回相同的內存地址,這不允許我區分該列表中的每個單獨對象。C++循環中的對象引用

任何解決方案?由於

我有以下功能:

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
 
cout<<&user<<endl; 

應該是:

 
cout<<user<<endl; 

&用戶地址當地變量Utilizador *保持不變。用戶變量值本身就是你需要的指針,並且它在每次迭代時都應該不同。

2

此行

cout<<&user<<endl; 

打印的指針的對象的地址。 user本身就是一個指向你正在創建的對象的指針。要打印對象的地址,你的意思是寫

cout<<user<<endl; 

雖然每次都將是一個新的對象,變量user總是在同一個地方。您可以將user的值添加到您的列表中,並且每次都會有所不同。

+0

我如何添加用戶的價值?你能給個例子嗎? – user1019880

+0

對不起,我不理解你的答案,英語不是我的母語... 我不能通過它的值,它必須拋出一個指針或內存引用 – user1019880

+0

你似乎並沒有添加任何地方,任何地方,所以我不能完全告訴你;但如果添加「用戶」,那實際上可以正常工作。不要添加「&user」。 –

1

「& user」指針的返回地址,它包含對對象的引用。