[英]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.