2011-10-29 48 views
0

可能重複:
C++ Object references in loop cycleC++對象引用

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

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

任何解決方案?由於

我有以下功能:

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

鏈表在類聲明

任何解決這個聲明? 謝謝

+4

這不應該發生,除非您在創建對象或其他錯誤後刪除對象。請發佈示例代碼,否則我們將無法提供幫助。 –

+0

你如何實例化對象?請致電 –

+0

。將實例變量推到列表上是沒問題的,把一個指向實例變量的指針聽起來很可疑.. –

回答

0

你有類似的東西嗎?

std::list<myobjecttype*> lst; 
for (..). 
{ 
    myobjecttype* a = new myobjecttype; 
    lst.push_back(a); 
} 
+0

對不起,我必須創建另一個主題,因爲我似乎無法使用小評論框發佈代碼 http:///stackoverflow.com/questions/7939832/c-object-references-in-loop-cycle – user1019880

+0

@ user1019880:您無需將其發佈在評論框中。只需編輯您的問題(問題左下方的「編輯」按鈕,就在標籤下)。 –

+0

對不起,不記得編輯... – user1019880

1
cout<<&user<<endl; 

這並不打印對象的地址,但指針對象的地址。對於程序的任何給定運行,該指針總是位於堆棧的相同位置,因此將產生相同的地址。