二进制表达式 cout 问题的无效操作数

Invalid operands to binary expression cout problem

void Basket_LinkedList::print_cookies() const{
    cout<<"**********cookies' basket**********"<<endl;
    //list<Cookie> basket_list;
    for (auto it=basket_list.begin(); it!=basket_list.end(); it++) {
        if (it->get_size()==Cookie::CookieSize::small) {
            //cout<<*it<<endl;
        }
    }
    cout<<"**********cookies' basket**********"<<endl;
}

我得到错误,行标记为 //,对于第一个:

(Invalid operands to binary expression ('std::__1::ostream')
(aka 'basic_ostream<char>')

第二个错误是:

'const std::__1::__list_const_iterator<Cookie, void *>::value_type'
(aka 'const Cookie')))

有人可以解释并帮助修复吗?

当编译器声明它不知道如何将插入运算符 << 与您提供的类型一起使用时,就会弹出这些类型的错误。定义如下函数会对您有所帮助。

ostream& operator<<(ostream& out, const Cookie& c){
    out << c.some_field;
    return out;
}