如何访问c++中类内部声明的结构体类型指针变量?

问题描述 投票:0回答:2
class btree{
 public:
 int non,vor;
 string str;
 struct tree{
   int data;
   struct tree *lnode;
   struct tree *rnode;
    };
};
int main(){
}

如何访问 main 中的结构类型指针 lnode 是否有可能帮助??????

c++ class pointers data-structures structure
2个回答
1
投票

您定义了

struct tree
,但实际上并未将任何内容放入您的
btree
中。改为这样做:

class btree {
public:
    int non, vor;
    string str;
    struct tree {
        int data;
        struct tree *lnode;
        struct tree *rnode;
    } node; // note the "node" that was added, now btree contains a struct tree named "node"
};

像这样访问它:

int main() {
    btree myTree;
    myTree.node.data = 10;
}

0
投票

是的,可以访问 btree 类中树结构中声明的结构类型指针 lnode 。然而,由于树结构嵌套在 btree 类中,并且 lnode 是该嵌套结构的私有成员,因此直接从 main() 访问它并不简单。

要从 main() 访问 lnode,您需要在 btree 类中提供公共成员函数,以允许操作树结构的成员。

以下是您可以如何执行此操作的示例:

#include <iostream>
#include <string>
using namespace std;

class btree {
public:
    int non, vor;
    string str;

    struct tree {
        int data;
        struct tree* lnode;
        struct tree* rnode;
    };

    // Function to access lnode
    struct tree* getLNode() {
        return &treenode; // Return a pointer to the tree structure
    }

private:
    struct tree treenode; // Instance of the tree structure
};

int main() {
    btree treeObj;

    // Accessing lnode using the getLNode() function
    btree::tree* lnodePtr = treeObj.getLNode();

    // Now you can use lnodePtr to access and manipulate the lnode
    // For example:
    lnodePtr->data = 42; // Assigning a value to lnode's data member

    return 0;
}

这里,getLNode()是btree类的公共成员函数,它返回指向树结构的指针。这允许您使用 btree 类的实例从 main() 访问和操作树结构的成员(包括 lnode)。

© www.soinside.com 2019 - 2024. All rights reserved.