对象的链表



我目前有一个链表类,它可以创建可以存储整数值的Node对象。我想修改我的List类,以便创建的节点能够引用来自不同类的对象指针,而不是简单的整数值。如何声明一个指针,指向一个在不同类中创建的对象呢?

这个链表类可以创建包含int值的节点对象。

我如何得到我的链表类能够存储指针对象?

#ifndef LINK_H 
#define LINK_H
class List{
  private:
    typedef struct Node{
      int m_data;
      Node *next;
    }* node_ptr;
    node_ptr cur;
    node_ptr temp; 
    node_ptr head;
  public:
    List();
    void add_node(int);
    void del_node(int);
    void print();
};
#endif 

这是食品班。我正试图让我的链表存储指针到已经从这个类创建的对象。

#ifndef FOOD_H
#define FOOD_H
#include<string>
using namespace std;
class Food{
  private:
    string m_name;
    bool m_meat;
    int m_price;
    int m_calories;

  public:

    Food();
    Food(string , bool, int , int ); 
    bool is_meat(bool );
    void print(ostream &os);
};
#endif

简单的答案是这样做:

class List{
  private:
    typedef struct Node{
      Food* m_data;
      Node *next;
    }* node_ptr;
    node_ptr cur;
    node_ptr temp; 
    node_ptr head;
  public:
    List();
    void add_node(Food*);
    void del_node(Food*);
    void print();
};

这应该可以工作-你必须包含头文件,在这里声明Food类,或者对Food类进行前向声明。

此代码可以调整,以获得更好的性能,更灵活或更安全。这使用了更多的c++特性。但是考虑这样做:

不要在头文件中使用using namespace std;或任何其他命名空间名称。这将在你要包含头文件的每个文件中"包含"这个命名空间。这很糟糕,因为它污染了全局命名空间。因此,如果您定义了一个函数int cout () {},就会与std::cout发生冲突。这是一个微不足道的例子,但在更大的项目中,这真的很重要。

相关内容

  • 没有找到相关文章

最新更新