我正在为项目编写一组链表功能 我需要为列表节点(int / char)中的数据类型提供灵活性
所以我正在尝试这样做:
main.cpp中的
#define INT_DATA
#include "lists.h"
....
lists.h 中的
但所有这些似乎都不起作用......
当原型不同时,我不想编写重复的代码。 我做错了什么?这可能吗? 请注意 这是一个练习,我不能使用类,我不能使用任何标准库#ifdef CHAR_DATA
typedef char DATA_TYPE;
#endif
#ifdef INT_DATA
typedef int DATA_TYPE;
#endif
typedef struct lnode {
DATA_TYPE data;
struct lnode* next; //points to the next node
} LNODE;
LNODE * createNewListNode(DATA_TYPE data, LNODE* next);
....
答案 0 :(得分:9)
这是C ++的模板进入的地方。模板允许您创建实现的框架。在这种情况下,您可能需要一个以“数据类型”作为参数的类。听起来不错......这就是它的样子:
template < typename DATA_TYPE >
struct lnode {
DATA_TYPE data;
lnode<DATA_TYPE>* next; //points to the next node
};
然后你可以像这样创建它们:
lnode<char> charNode;
lnode<int> intNode;
答案 1 :(得分:2)