//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';
}
答案 0 :(得分:2)
我认为应该这样做:
(*newnode)->data = data;
(*newnode)->left = nullptr;
(*newnode)->right = nullptr;
在我的答案和您的答案中注意星号的位置。
在您的版本中,->运算符在*运算符之前被调用,因为它具有更高的优先级。因此,您实质上是在尝试访问指向对象的指针的属性,而不是对象本身。
有关首先调用哪个运算符的更多信息,请参见this。