您如何为包含shared_ptr的类创建复制构造函数/赋值运算符? C ++

问题描述 投票:0回答:3

说,我有一个名为Ninja的类.h文件

我有两个成员函数,默认名称设置为Ninja master,disple_ child设置为nullptr

下面是我班上公共/私人的摘录:

private:

    std::string name_;
    std::shared_ptr<Ninja> disciples_;


  public:
    Ninja(std::string name = "Ninja Master")
      : name_{name},
        disciples_{std::shared_ptr<Ninja>(nullptr)}
     {}
    ~Ninja() = default;     
Ninja(const Ninja& copy2);  //trying to make a copy constructor here
Ninja& operator=(const Ninja&);   // I also need help creating an assignment operator too 

我想创建一个深层复制构造函数,但出现错误。

下面是.cpp文件中我的深层复制构造函数的代码段。

Ninja::Ninja(const Ninja& copy2) {
   Ninja a();
   a = copy2; //error cannot convert const Ninja to Ninja() in assignment
}
c++ class constructor deep-copy
3个回答
0
投票

[Ninja a();声明一个函数。


0
投票

您可以执行以下操作-


0
投票

深层复制构造函数的示例:

© www.soinside.com 2019 - 2024. All rights reserved.