C ++ объектные ссылки в цикле цикла - PullRequest
0 голосов
/ 29 октября 2011

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

Есть ли какое-либо решение для этого?Спасибо

У меня есть функция со следующим:

    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 ]

3 голосов
/ 29 октября 2011
cout<<&user<<endl;

должно быть:

cout<<user<<endl;

, а пользователем является адрес локальной переменной Utilizador *, который остается неизменным.Значение переменной пользователя само по себе является указателем, который вам нужен, и он должен отличаться на каждой итерации.

2 голосов
/ 29 октября 2011

Эта строка

cout<<&user<<endl;

печатает адрес указателя на объект.user сам по себе является указателем на объект, который вы создаете.Чтобы напечатать адрес вашего объекта, вы намеревались написать

cout<<user<<endl;

Хотя каждый раз это будет новый объект, переменная user всегда находится в одном и том же месте.Вы можете добавить значение user в свой список, и оно действительно будет отличаться каждый раз.

1 голос
/ 29 октября 2011

«& user» возвращает адрес указателя, который содержит ссылки на объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...