C++ 对象链表

C++ 对象链表,c++,pointers,linked-list,nodes,C++,Pointers,Linked List,Nodes,我目前有一个链表类,可以创建可以存储整数值的节点对象。我想修改我的列表类,以便创建的节点能够引用指向不同类中对象的指针,而不是简单的整数值。我将如何声明一个指向在不同类中创建的对象的指针 此链表类可以创建包含int值的节点对象 如何使我的链表类能够存储指向对象的指针 #ifndef LINK_H #define LINK_H class List{ private: typedef struct Node{ int m_data; Node *next;

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

此链表类可以创建包含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
\ifndef FOOD\u H
#定义食物
#包括
使用名称空间std;
等级食品{
私人:
字符串m_name;
肉;
国际货币单位价格;
单位热量;
公众:
食物();
食物(字符串、布尔、整数、整数);
bool是_肉(bool);
作废打印(ostream&os);
};
#恩迪夫

简单的答案是进行以下更改:

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();
};
这应该是可行的——您必须包括声明食品类的标题,或者对食品类进行正向声明

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


不要使用
名称空间std
或头文件中的任何其他命名空间名称。这将在包含头的每个文件中“包含”此命名空间。这是不好的,因为它会污染全局命名空间。因此,如果定义一个函数
intcout(){}
,就会与std::cout发生冲突。这是一个微不足道的例子,但在更大的项目中,这一点非常重要。

答案很简单:更改它,使其生效。它不是一个
int
,而是一个指针。这有什么难的?