标题文件:
#ifndef CART_H
#define CART_H
#include "Tops.h"
#include <iostream>
#include <vector>
using namespace std;
class Cart
{
public:
Cart();
void addTop(Tops& top);
friend ostream& operator<<(ostream& ostr, const Cart& c);
private:
vector<Tops> tops;
};
#endif
实施档案:
#include "Cart.h"
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
Cart::Cart() { }
void Cart::addTop(Tops &top)
{
tops.push_back(top);
}
ostream& operator<<(ostream &ostr, const Cart &c)
{
ostr << "TOPS IN CART:\n-------------\n";
for (auto const top : c.tops) {ostr << top << endl; } // no match for 'operator<<'
return ostr;
}
问题:我不断为运营商&lt;&lt;&#34;错误,我不知道为什么,我也不知道它意味着什么。当我谷歌这个错误时,导致其他人代码错误的原因并不适用于我的。
答案 0 :(得分:0)
在您的声明中,您已声明Cart参数将为const:
friend ostream& operator<<(ostream& ostr, const Cart& cart);
但你的定义不是:
ostream& operator<<(ostream &ostr, Cart &c)
他们需要匹配(两者都是const或者两者都不是 - 这两个const都在这里),因为朋友声明是有用的。