C++ 对象链表
我目前有一个链表类,可以创建可以存储整数值的节点对象。我想修改我的列表类,以便创建的节点能够引用指向不同类中对象的指针,而不是简单的整数值。我将如何声明一个指向在不同类中创建的对象的指针 此链表类可以创建包含int值的节点对象 如何使我的链表类能够存储指向对象的指针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;
#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
,而是一个指针。这有什么难的?