Здравствуйте , в общем приходится перелезать с процедурного программирования на ООП , и в связи с этим
появилось пару вопросов . В классе пока только конструктор и метод создания дерева :
Код
class TreeNode
{
private :
struct node
{
node * left ;//ссылка не левого потомка
node * right ;//ссылка на правого потомка
int key ;
} ;
node * q ;
node * root ;
int i,n ;
int * data ;
public :
TreeNode(int n)
{
node::key = 0 ;
node::right = node::left = NULL ;
i = 1 ;
q = root = new node ;
data = new int[n];
this->n = n ;
for (int i = 0 ; i < n ; i++)
cin >> data[i] ; // Ввод узлов дерева
}
void create_tree(node *& q ,node *& root , int i )
{
if ( (i > n) || (data[i-1] == -1 ) )
{
q = NULL ;
return ;
}
node * p = new node ;
p->key = data[i-1];
q = p ;
if ( i == 1)
root = p ;
create_tree(q->left , root, 2*i ) ;
create_tree(q->right ,root , 2*i+1);
}
} ;Компилятор выдаёт ошибку в строчках node::key = 0 и node::right = node::left = NULL
Раньше ,пока не знал классов было достаточно просто написать node.key = 0 . Здесь же это уже не прокатывает , собственно как
и :: . В общем вопрос в том как банально проиницилизировать эти поля .
Заранее спасибо .