我如何访问类中结构的数据成员?

时间:2018-03-30 01:47:04

标签: c++

我已经写了这个类和成员函数,并在main函数中创建了对象。它调用show函数就好了,但show函数本身表示它无法访问root,因为它没有在范围内声明。我将数据成员设置为公共成员,我并不认为我需要一个getter / setter。什么是允许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
}

1 个答案:

答案 0 :(得分:2)

您实际上并未将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.来限定引用,如第一个示例所示。