C++如何访问结构中的结构

C++ how to access struct in struct

本文关键字:结构 访问 何访问 C++      更新时间:2023-10-16

>我有一个关于结构的问题。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;
    };
};

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

struct List
{
    struct NewList
    {
        int data;
    };
    NewList my_new_list;  // Declare a member
};

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

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

如果你的意思是如何访问List内部的NewList结构来声明一个局部变量,那么你必须使用 scope 运算符::

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

看起来像是链表的实现赋值

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

我不知道你的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 来清理它们