如何访问列表中的数据成员,其类型与我的列表不同
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)
我正在编写一个包含 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)