相关疑难解决方法(0)

为什么移动构造函数需要其成员的默认构造函数?

我试图为没有复制构造函数的类实现移动构造函数.我收到一个错误,该类的成员的默认构造函数丢失.

这是一个简单的例子来说明这一点:

struct A {
public:
        A() = delete;
        A(A const&) = delete;
        A(A &&a) {}
};

struct B {
        A a;
        B() = delete;
        B(B const&) = delete;
        B(B &&b) {}
};
Run Code Online (Sandbox Code Playgroud)

试着编译这个,我得到:

move_without_default.cc: In constructor ‘B::B(B&&)’:
move_without_default.cc:15:11: error: use of deleted function ‘A::A()’
  B(B &&b) {}
           ^
move_without_default.cc:6:2: note: declared here
  A() = delete;
  ^
Run Code Online (Sandbox Code Playgroud)

为什么这是一个错误?有什么办法吗?

c++ default-constructor move-constructor

18
推荐指数
3
解决办法
1437
查看次数