C ++如何在struct中访问struct

时间:2013-10-03 13:27:11

标签: c++ struct

我对结构有疑问.C ++不是我正在学习的语言,但我需要做运动..

我有这样的结构:

struct List
{
    int data;
    List* next;
};

我得到了类和方法,我可以添加/删除/打印出结构元素,例如查看我得到的元素方法:

void Kopa::Print()
{
    List *tmp = p;
    while (tmp != NULL)
    {
        cout << tmp->data << endl;
        tmp = tmp->next;
    }
    tmp.struktura;
}

问题是,如何在列表结构中添加和访问新结构? 我猜它结构看起来像这样,但我不明白如何用类方法访问它..

struct List
{
    int data;
    List* next;

    struct NewList
    {
        int data;
        NewList* next;
    };
};

2 个答案:

答案 0 :(得分:0)

首先,您必须声明该结构的成员,就像您声明其他成员变量一样:

struct List
{
    struct NewList
    {
        int data;
    };

    NewList my_new_list;  // Declare a member
};

然后你像任何其他成员一样使用它,只需根据需要嵌套成员访问:

List l;
l.my_new_list.data = ...;

如果您的意思是如何访问NewList内的List结构以声明局部变量,那么您必须使用范围运算符::

List::NewList new_list;
new_list.data = ...;

答案 1 :(得分:0)

这看起来像是链表的实现分配

您的结构看起来像节点结构,而不是列表。所以我将使用struct Node而不是List来避免混淆。

我不知道你的p来自哪里,但实际上你将如何在你的函数中创建p。

Node *p = new Node();
p->data = 1;
p->next = NULL;

现在如果你需要添加一个新的,做同样的事情

Node *q = new Node ();
q->data = 2;
q->next = NULL;
//assign q after p
p->next = q;

您还可以在结构

中创建构造函数
Node (Node *previous, int newData)
{
    List *q = new Node ();
    q->data = newData;
    q->next = NULL;
    previous->next = q;
}

确保在完成这些指针后调用delete来清理这些指针