gpt4 book ai didi

c++ - 成员属性作为方法的默认值

转载 作者:搜寻专家 更新时间:2023-10-31 00:55:27 25 4
gpt4 key购买 nike

我有一个如下所示的头文件

#ifndef BINARY_SEARCH_TREE_H
#define BINARY_SEARCH_TREE_H

struct Node
{
int data;
Node *left, *right;
Node(int data);
};

class BinarySearchTree
{
Node *head;
public:
BinarySearchTree();
void insert(int data);
void inorder(Node *cur = head);
};

#endif

它说

In file included from Binary_Search_Tree.cpp:2:0:
Binary_Search_Tree.h:17:28: error: invalid use of non-static data member ‘BinarySearchTree::head’
void inorder(Node *cur = head);
^
Binary_Search_Tree.h:13:9: note: declared here
Node *head;

注意:我在定义方法时没有提供默认值。我想那是没有必要的。

默认值只允许静态或常量值吗?如果是,那为什么?还是其他什么地方出了问题?

最佳答案

您正在寻找的行为无法在 C++ 中完成。默认值必须是“有点恒定”。这意味着实际常量或静态字段等。还有更多信息 here关于什么是允许的,而不是默认参数。


解决这个问题的一种方法是有一个没有任何参数的重载,它只调用从 head 开始的单参数函数。另一种是使用 null 作为默认参数,并在提供时用 head 替换它。不过,如果您到达空叶节点,这可能会中断。

关于c++ - 成员属性作为方法的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41908781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com