如何使用双指针在类中的变量中分配值?

时间:2018-10-12 02:39:02

标签: c++ tree

//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 :(得分:2)

我认为应该这样做:

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

在我的答案和您的答案中注意星号的位置。

在您的版本中,->运算符在*运算符之前被调用,因为它具有更高的优先级。因此,您实质上是在尝试访问指向对象的指针的属性,而不是对象本身。

有关首先调用哪个运算符的更多信息,请参见this