1

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

1 回答 1

4

数据成员m属于Movie该类。coutwith<< 运算符仅对 int、char、float 等内置数据类型进行重载。因此它不会输出用户定义数据类型的对象。<<为此,您必须为自己的类重载运算符。

如果不想重载运算符 <<,则必须以这种方式将 Movie 类的数据成员一一输出,前提是它们是 publicy 声明的。

cout << n->m.var1 ;
cout << n->m.var2 ;

如果 Movie 类的数据成员是私有的,则必须为此创建 getter 函数。

cout << n->m.getvar1() ;
cout << n->m.getvar2() ;
于 2012-11-25T06:36:16.147 回答