How to fix "error: invalid use of non-static data member 'tree::root'" error in c++?

How to fix "error: invalid use of non-static data member 'tree::root'" error in c++?

我有以下代码:

#include <bits/stdc++.h>
#define DEFAULT_NODE_VALUE 0
using namespace std;


class node{
public:
    int val;
    node* right = 0;
    node* left = 0;
    node(int a):val(a){}

};

class tree{
public:
    node* root = new node(DEFAULT_NODE_VALUE);
    tree(int inp_val){
        root->val = inp_val; 
    }

    void inorder_traverse(node* temp = root){
        
    }
    
};

我想为 inorder_traverse 函数中的 temp 参数设置默认参数,但是 当我编译上面的代码时,编译器显示如下:

22:37: error: invalid use of non-static data member 'tree::root'
17:8: note: declared here

请帮我解决这个问题。提前致谢...

不在方法范围内计算参数默认值。不要使用默认参数,而是使用重载。

void inorder_traverse() {
    inorder_traverse(root);
}
void inorder_traverse(node *temp) {
    // code
}