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