C ++默认参数类成员

basav
class bst
{
private:

typedef struct nod
{
  int data;
  nod* left;
  nod* right;
  nod(int key):data(key),left(NULL),right(NULL){}
}node;
 node* root;

public:

void create();
void add(int key,node*curr=root);
void c2ll();
void print(){}

该代码无法编译...我得到以下错误。

ain.cpp: In function ‘int main()’:
main.cpp:7:12: error: call to ‘void bst::add(int, bst::node*)’ uses the default argument for parameter 2, which is not yet defined
   bt.add(50);
            ^
In file included from bst.cpp:1:0:
bst.h:14:8: error: invalid use of non-static data member ‘bst::root’
  node* root;
        ^
bst.h:19:28: error: from this location
 void add(int key,node*curr=root);
                            ^
bst.h:14:8: error: invalid use of non-static data member ‘bst::root’
  node* root;
        ^
bst.cpp:10:34: error: from this location
 void bst::add(int key,node* curr=root)

任何建议都将受到欢迎...我试图避免编写包装器方法,而是使用c ++提供的默认功能

来自莫斯科的弗拉德

根据C ++标准(8.3.6默认参数)

  1. ...类似地,即使不进行评估,也不得在默认参数中使用非静态成员,除非它作为类成员访问表达式(5.2.5)的id表达式出现,或者除非使用了它形成指向成员(5.3.1)的指针。[示例:在下面的示例中,X :: mem1()的声明格式错误,因为没有为用作初始化程序的非静态成员X :: a提供对象。
int b;
class X {
int a;
int mem1(int i = a); // error: non-static member a
// used as default argument
int mem2(int i = b); // OK; use X::b
static int b;
};

您可以重载功能add例如

void add( int key );

void add( int key, node *curr );

root默认情况下,第一个功能将使用它可以简单地调用第二个函数,将节点根作为第二个参数传递。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

默认参数中的静态数据成员(类指针)通过 C++ 类

来自分类Dev

C ++ 11:使用非静态成员函数作为类构造函数中的默认参数

来自分类Dev

C ++-无法将默认参数添加到类模板成员的离线定义中

来自分类Dev

C++静态模板类成员作为朋友模板函数默认参数

来自分类Dev

C ++中类成员的默认值

来自分类Dev

具有默认参数的C ++静态成员方法

来自分类Dev

在C#中将默认值设置为成员类

来自分类Dev

C ++ 11中类数据成员的默认初始化

来自分类Dev

为Python类成员分配默认参数

来自分类Dev

C ++可以使用类变量作为默认参数

来自分类Dev

使用类成员作为成员函数的默认参数

来自分类Dev

C ++索引类成员

来自分类Dev

C ++类成员存储

来自分类Dev

C ++结构/类成员

来自分类Dev

C ++索引类成员

来自分类Dev

C ++标准是否明确禁止通过constexpr成员函数指针进行的调用中的默认参数?

来自分类Dev

在类中,数组成员C ++ 11的默认初始化程序

来自分类Dev

使用类变量作为类成员函数的默认参数

来自分类Dev

C ++中的默认参数

来自分类Dev

使用类成员函数/变量初始化默认参数

来自分类Dev

如何在C ++类模板中访问指向成员参数的指针?

来自分类Dev

泛型函数,可以接受参数C ++中的任何类成员

来自分类Dev

C ++:如何在类成员中使用未命名的模板参数?

来自分类Dev

C ++类-在将参数传递给成员对象之前对其进行验证

来自分类Dev

c#将类类型成员作为参数传递,按值调用

来自分类Dev

泛型函数,可以接受参数C ++中的任何类成员

来自分类Dev

在C ++中,是否可以通过更改类声明来更改成员函数的参数类型?

来自分类Dev

C ++推论成员函数参数

来自分类Dev

C ++:访问父类的成员

Related 相关文章

  1. 1

    默认参数中的静态数据成员(类指针)通过 C++ 类

  2. 2

    C ++ 11:使用非静态成员函数作为类构造函数中的默认参数

  3. 3

    C ++-无法将默认参数添加到类模板成员的离线定义中

  4. 4

    C++静态模板类成员作为朋友模板函数默认参数

  5. 5

    C ++中类成员的默认值

  6. 6

    具有默认参数的C ++静态成员方法

  7. 7

    在C#中将默认值设置为成员类

  8. 8

    C ++ 11中类数据成员的默认初始化

  9. 9

    为Python类成员分配默认参数

  10. 10

    C ++可以使用类变量作为默认参数

  11. 11

    使用类成员作为成员函数的默认参数

  12. 12

    C ++索引类成员

  13. 13

    C ++类成员存储

  14. 14

    C ++结构/类成员

  15. 15

    C ++索引类成员

  16. 16

    C ++标准是否明确禁止通过constexpr成员函数指针进行的调用中的默认参数?

  17. 17

    在类中,数组成员C ++ 11的默认初始化程序

  18. 18

    使用类变量作为类成员函数的默认参数

  19. 19

    C ++中的默认参数

  20. 20

    使用类成员函数/变量初始化默认参数

  21. 21

    如何在C ++类模板中访问指向成员参数的指针?

  22. 22

    泛型函数,可以接受参数C ++中的任何类成员

  23. 23

    C ++:如何在类成员中使用未命名的模板参数?

  24. 24

    C ++类-在将参数传递给成员对象之前对其进行验证

  25. 25

    c#将类类型成员作为参数传递,按值调用

  26. 26

    泛型函数,可以接受参数C ++中的任何类成员

  27. 27

    在C ++中,是否可以通过更改类声明来更改成员函数的参数类型?

  28. 28

    C ++推论成员函数参数

  29. 29

    C ++:访问父类的成员

热门标签

归档