我正在尝试使用循环创建相同类型的不同对象,然后将指针存储到链接列表中的每个特定对象。 问题是,每当一个对象实例化时,它的指针返回相同的内存地址,这不允许我区分该列表中的每个单独的对象。
我正在尝试使用循环创建相同类型的不同对象,然后将指针存储到链接列表中的每个特定对象。问题是,每当一个对象实例化时,它的指针返回相同的内存地址,这不允许我区分该列表中的每个单独的对象。
任何解决方案?感谢
我有以下功能:
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();
}
链接列表在类声明
中声明任何解决方案? 感谢
答案 0 :(得分:1)
cout<<&user<<endl;
不打印对象的地址,但指针的地址打印到对象。对于任何给定的程序运行,该指针将始终位于堆栈的相同位置,因此将产生相同的地址。
答案 1 :(得分:0)
std::list<myobjecttype*> lst;
for (..).
{
myobjecttype* a = new myobjecttype;
lst.push_back(a);
}