【发布时间】:2020-04-15 09:33:40
【问题描述】:
我有一个树类,如下所示:
class avl
{
node *root;
public:
avl(int data){
root->data = data;
}
int get_height(node *head = root){ //error here
if (head->right == head->left) return 0;
int l = get_height(head->left);
int r = get_height(head->right);
if (l > r) return l+1;
return r+1;
}
}
不出所料,这会在 get_height 定义处产生错误。 g++ 将其抱怨为“对非静态数据成员的无效使用”。我可以修改这个问题还是应该在这里不雅地使用包装器。如果您可以在标准说明此错误原因的内容中添加一些详细信息,我将不胜感激。
【问题讨论】:
-
包装器有什么不雅点?
int get_height() { return get_height(root); } int get_height(node *head) { ... }
标签: c++ language-lawyer default-arguments