簡體   English   中英

如何訪問類中結構的數據成員?

[英]How would I access the data member of a struct within a class?

我已經編寫了此類以及成員函數,並在main函數中創建了對象。 它調用show函數很好,但是show函數本身說它不能訪問root,因為它沒有在作用域中聲明。 我將數據成員設置為公共成員,並且我認為不需要此方法。 允許show()訪問root的最佳方法是什么?

class bst
{
            public:
            struct Node
            {
                public:
                int data;
                struct Node *left;
                struct Node *right;
                Node* root = NULL;
            };

            void show();

};

void bst::show()
{
    if(root == NULL) return;

    show(root->left);       //Visit left subtree
    printf("%d ",root->data);  //Print data
    show(root->right);      // Visit right subtree
}

看起來您實際上並未將struct Node的實例定義為bst類的成員。 您定義了嵌套類,但未聲明其實例。 聲明一個,然后可以使用其下聲明的名稱來使它起作用,例如:

class bst
{
            public:
            struct Node
            {
                public:
                int data;
                struct Node *left;
                struct Node *right;
                Node* root = NULL;
            };
            Node node;

            void show();
};


void bst::show()
{
    if(node.root == NULL) return;

    show(node.root->left);       //Visit left subtree
    printf("%d ",node.root->data);  //Print data
    show(node.root->right);      // Visit right subtree
}

您可能希望讓root成為bst的成員,在這種情況下,您需要重新安排將其放入bst ,而不是Node類的聲明:

class bst
{
            public:
            struct Node
            {
                public:
                int data;
                struct Node *left;
                struct Node *right;
            };
            Node* root = NULL;

            void show();
};

在這種情況下,您將不需要使用node.限定引用node. 如第一個示例所示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM