将变量声明为类成员时C ++错误使用删除的函数

时间:2018-06-30 04:44:33

标签: c++ compiler-errors

基本上,我正在创建一个类A,而另一个类B被声明为类A的成员。如果执行此操作,则会使用已删除的函数错误。

但是,如果我在类A的函数之一中声明了类B,则不会出现此错误。我得到的错误是

....被隐式删除,因为默认定义会格式不正确...使用已删除的功能...

我知道某人无法解释发生这种情况的确切原因,但是我真的不理解该错误的含义以及为什么只有在我声明B类为成员而不是对象中的对象时才会发生功能。为什么或如何调试这种情况的任何解释?

虽然代码很复杂,但是我描述的区别如下。

这给了我错误:

class A: public Base {

  void do_stuff();

  B obj_b;
}

这不会给我错误:

class A: public Base {

  void do_stuff()
  {
    B obj_b;
  };
}

这也不会给我一个错误:

class A: public Base {

  void do_stuff();

  static B obj_b;
}

0 个答案:

没有答案