显示包含多个类的链表?

时间:2012-11-25 06:31:07

标签: c++ linked-list

我不确定为什么我的显示功能不起作用。我的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;
}

1 个答案:

答案 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() ;