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 ответа
соиЬ<< & пользователь << епсИ;
должно быть:
соиЬ<< пользователь << епсИ;
&user - адрес локальной переменной Utilizador*, который остается неизменным. Значение переменной пользователя само по себе является указателем, который вам нужен, и он должен отличаться на каждой итерации.
Эта линия
cout<<&user<<endl;
печатает адрес указателя на объект. user
сам по себе является указателем на объект, который вы создаете. Чтобы напечатать адрес вашего объекта, вы хотели написать
cout<<user<<endl;
Хотя каждый раз это будет новый объект, переменная user
всегда в одном и том же месте. Вы можете добавить значение user
в ваш список, и он действительно будет отличаться каждый раз.
"&user" возвращает адрес указателя, который содержит ссылки на объекты.