我不确定为什么我的显示功能不起作用。我的cout
声明陈述了类似
no match for operator << in std :: cout<<n->movieinventory::movienode::m
有什么想法吗?
class MovieInventory
{
private:
struct MovieNode // the Nodes of the linked list
{
Movie m; // data is a movie
MovieNode *next; // points to next node in list
};
MovieNode *movieList; // the head pointer
bool removeOne(Movie); // local func, used by sort and removeMovie
public:
MovieInventory();
bool addMovie(Movie);
int removeMovie(Movie);
void showInventory();
Movie findMinimum(); // should be private, but public for testing
void sortInventory();
int getTotalQuantity();
float getTotalPrice();
};
显示代码:
void MovieInventory::showInventory()
{
MovieNode *n;
for (n = movieList; n != NULL; n = n->next)
cout << n->m;
}
答案 0 :(得分:4)
数据成员m
属于Movie
类。带有cout
operator的<<
仅针对内置数据类型重载为int,char,float等。因此,它不会输出用户定义数据类型的对象。您必须为自己的类重载<<
运算符。
如果您不想重载操作符&lt;&lt;,则必须以这种方式逐个输出Movie类的数据成员,前提是它们是publicy声明的。
cout << n->m.var1 ;
cout << n->m.var2 ;
如果Movie类的数据成员是私有的,则必须为此创建getter函数。
cout << n->m.getvar1() ;
cout << n->m.getvar2() ;