如何访问列表中的数据成员,其类型与我的列表不同

How to access data member in a list, with different type than my list

我正在编写一个包含 Artikel 类型列表的程序,列表中有几个元素,每个元素包含 4 个数据成员,2 个 int 和 2 个 string。该列表按 int artikelNr 排序,下面的函数应该在正确的位置将新的 Artikel 添加到列表中,并牢记其 artikelNr。尽管由于列表是 Artikel 类型并且我正在比较的数据成员是 Int 我得到错误:'->' 的基本操作数具有非指针类型 'Artikel'|

我试图为 int 类型的列表创建一个迭代器 *it 但它不起作用,因为列表是 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++;
}
}

我记不太清了,但是如果您在 C++ 中取消引用一个变量,则不需要“->”运算符。尝试使用 '.'相反:

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

最好的解决方法是:

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)