我正在编写一个包含Artikel类型列表的程序,在列表中有几个元素,每个元素包含4个数据成员,2个int和2个字符串。该列表按int artikelNr排序,下面的函数应该在正确的位置添加一个新的Artikel,并考虑到artikelNr。虽然由于列表属于Artikel类型,而我与之比较的数据成员是Int,我得到错误:' - >'的基本操作数。有非指针类型' Artikel' |
我试图将iterator * it设置为int类型的列表,但由于列表属于Artikel类型,所以它不起作用。
void Lager::lagg_till_registret(Artikel funkArtikel)
{
bool check = false;
list<Artikel>::iterator it = listaMedArtiklar.begin();
while(check == false){
if(funkArtikel.artikelNr < (*it)->artikelNr){
listaMedArtiklar.insert (it,funkArtikel);
check = true;
}
else
it++;
}
}
答案 0 :(得分:1)
解决问题的最佳方法是:
void Lager::lagg_till_registret(Artikel funkArtikel)
{
bool check = false;
list<Artikel>::iterator it = listaMedArtiklar.begin();
while(check == false){
if(funkArtikel.artikelNr < it->artikelNr){
listaMedArtiklar.insert (it,funkArtikel);
check = true;
}
else
it++;
}
}
你也可以这样做(这等于第一个,但看起来很难看)
if(funkArtikel.artikelNR < (*it).artikelNr)
答案 1 :(得分:0)
我不记得,但是如果你用c ++取消引用变量,你就不需要&#39; - &gt;&#39;运营商。尝试使用&#39;。&#39;代替:
void Lager::lagg_till_registret(Artikel funkArtikel)
{
bool check = false;
list<Artikel>::iterator it = listaMedArtiklar.begin();
while(check == false){
if(funkArtikel.artikelNr < (*it).artikelNr){
listaMedArtiklar.insert (it,funkArtikel);
check = true;
}
else
it++;
}
}