Первая ошибка заключается в том, что вам необходимо переслать объявление узла.Вторая ошибка заключается в том, что вы пытаетесь получить доступ к узлу, который объявлен в частном порядке внутри BinaryTree.
Первый ответ:
typedef struct node
{
node* lchild = nullptr;
int data;
node* rchild = nullptr;
}node;
class BinaryTree
{
public:
BinaryTree();
~BinaryTree();
void createRootNode();
void getChildren();
void getLeftChild(node* n);
void getRightChild(node* n);
private:
node* root;
};
void BinaryTree::getLeftChild(node* n)
{
}
void BinaryTree::getRightChild(node* n)
{
}
Теперь код прекрасно компилируется.
Или, если вы хотите, чтобы typedef был определен как private внутри, вам нужно, чтобы реализация находилась внутрикласс также.
Второй ответ:
typedef struct node;
class BinaryTree
{
public:
BinaryTree();
~BinaryTree();
void createRootNode();
void getChildren();
void getLeftChild(node* n)
{
}
void getRightChild(node* n)
{
}
private:
typedef struct node
{
node* lchild = nullptr;
int data;
node* rchild = nullptr;
}node;
node* root;
};