在c ++中,我尝试将类数据设置为类中函数的默认值,但在构建时会抛出错误。 代码如下所示:
class tree{
public:
node *root;
bool push(node what, node* current = root, int actualheight = 1){
编译器抛出错误
无效使用非静态数据成员' tree :: root'从功能的位置
如果我删除'当前'的默认值它工作正常。可能是什么问题呢?我怎么能解决它?
答案 0 :(得分:6)
函数参数列表中没有this
指针,因此您无法在默认参数中引用类成员。
解决方案是重载函数:
bool push(node what, node* current, int actualheight = 1){...}
bool push(node what){ return push(what, root); }
现在当你用一个参数调用push
时,它转发到另一个重载,提供root
作为第二个参数,这正是你想要实现的目标。