【问题标题】:How to fix "error: invalid use of non-static data member 'tree::root'" error in c++?如何修复 C++ 中的“错误:无效使用非静态数据成员‘tree::root’”错误?
【发布时间】:2020-12-27 03:44:55
【问题描述】:

我有以下代码:

#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

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

【问题讨论】:

    标签: c++ compiler-errors arguments


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-07-10
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      相关资源
      最近更新 更多