Как присвоить значение переменной в классе с помощью двойного указателя? - PullRequest
0 голосов
/ 12 октября 2018
//Structure of Tree Data Structure

class node {

public:
    int    data;
    struct node *left;
    struct node *right;


    void create_node(class node **, int);
};

void node::create_node(class node **newnode, int data)
{

    //class node *newnode;
    *newnode = (class node *)malloc(sizeof(class node));

    *(newnode)->data = data;//Assigning data to struct member
    *(newnode)->left = NULL;
    *(newnode)->right = NULL;
}

int main() {

    class node ob1, *newnode;
    ob1.create_node(&newnode, 1);
    //Printing values from class

    std::cout << "Root: " << newnode->data << '\n';
    std::cout << "Left: " << newnode->left << '\n';
    std::cout << "Right: " << newnode->right << '\n';
}

1 Ответ

0 голосов
/ 12 октября 2018

Я полагаю, что это должно сделать это:

 (*newnode)->data = data;
 (*newnode)->left = nullptr;     
 (*newnode)->right = nullptr;

Обратите внимание на расположение звездочки в моем ответе и на вашем.

Оператор -> вызывается перед оператором * в вашей версии, поскольку он имеет более высокий приоритет.Таким образом, вы пытаетесь получить доступ к атрибуту указателя на объект, а не к самому объекту.

См. this для получения дополнительной информации о том, какие операторы вызываются первыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...