2011-10-29 47 views
0

可能性の重複:
C++ Object references in loop cycleC++オブジェクト参照

私はループを使用して、同じタイプの異なるオブジェクトを作成しようとし、各特定のポインタを格納していますリンクされたリスト内のオブジェクト。 問題は、オブジェクトがインスタンス化されるたびに、そのポインタが同じメモリアドレスを返すため、そのリスト内の各オブジェクトを区別することができなくなります。

ループを使用して同じタイプの異なるオブジェクトを作成しようとしていて、リンクされたリスト内の各特定のオブジェクトへのポインタを格納しようとしています。問題は、オブジェクトがインスタンス化されるたびに、そのポインタが同じメモリアドレスを返すため、そのリスト内の個々のオブジェクトを区別することができなくなります。

これに対する解決策はありますか?おかげ

は、私は次のように機能を持っている:

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; 

これませない印刷オブジェクトのアドレスが、オブジェクトへのポインタのアドレス。このポインタは、プログラムの任意の実行に対して常にスタック上の同じ位置にあるため、同じアドレスを生成します。

関連する問題