如何在main中使用struct的数据类型声明链表的实例? 例如......我应该有一个包含信息结构的类。链表应该具有结构的数据类型。这是指令:DVD类具有结构,其中一个数据成员是链接列表的实例,该结构作为数据类型。
class DVD
{
private:
struct disc
{
int length;
string name;
};
链接列表
template <class T>
class LinkedList1
{
private:
// Declare a structure
struct discList
{
T value;
struct discList *next; // To point to the next node
};
discList *head; // List head pointer
public:
// Default Constructor
LinkedList1()
{ head = NULL; }
// Destructor
~LinkedList1();
// Linked list operations
void appendNode(T);
void insertNode(T);
void deleteNode(T);
void displayList() const;
};
答案 0 :(得分:3)
您需要做的就是在尖括号之间指定类型,如下所示:
LinkedList1<DVD> myLinkedList;
修改强>
以下是场景背后发生的事情,编译器会用T
替换每个DVD
。
回到你的代码,我们得到了这个:
struct discList
{
DVD value; // You used to have T here
struct discList *next; // To point to the next node
};
并且您将拥有一个链接列表,其中每个节点都是一个保持DVD
值的结构。
答案 1 :(得分:0)
模板类可以访问结构的名称。
您可以分别定义此结构并在类DVD中同时使用其定义,并作为模板类的模板参数,例如
struct disc
{
int length;
string name;
};
class DVD
{
private:
disc obj;
};
然后
LinkedList<disc> l;
或者您可以在DVD类中为结构光盘定义公共typedef。例如
class DVD
{
private:
struct disc
{
int length;
string name;
};
public:
typedef disc disc_t;
};
LinkedList<DVD::disc_t> l;