C++ объектные ссылки в цикле

Возможный дубликат:
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();
    }

Связанный список объявлен в заявлении класса

Любое решение этого? Спасибо

2 ответа

    cout<<&user<<endl;

Это не печатает адрес объекта, но адрес указателя на объект. Этот указатель всегда будет находиться в одном и том же месте в стеке для любого заданного запуска программы и, таким образом, будет давать один и тот же адрес.

У тебя есть что-то подобное?

std::list<myobjecttype*> lst;
for (..). 
{
   myobjecttype* a = new myobjecttype;
   lst.push_back(a);
}
Другие вопросы по тегам