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
}
我有以下代码:
#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
}