在类函数中使用类data-member作为默认值c ++

时间:2015-01-27 14:21:11

标签: c++

在c ++中,我尝试将类数据设置为类中函数的默认值,但在构建时会抛出错误。 代码如下所示:

    class tree{
    public:
    node *root;
    bool push(node what, node* current = root, int actualheight = 1){

编译器抛出错误

  

无效使用非静态数据成员' tree :: root'从功能的位置

如果我删除'当前'的默认值它工作正常。可能是什么问题呢?我怎么能解决它?

1 个答案:

答案 0 :(得分:6)

函数参数列表中没有this指针,因此您无法在默认参数中引用类成员。

解决方案是重载函数:

bool push(node what, node* current, int actualheight = 1){...}

bool push(node what){ return push(what, root); }

现在当你用一个参数调用push时,它转发到另一个重载,提供root作为第二个参数,这正是你想要实现的目标。