相关疑难解决方法(0)

在make_unique中使用此*

我有一个Factory设计模式的小例子,我对这部分感兴趣:

std::make_unique< A >(*this)
Run Code Online (Sandbox Code Playgroud)

......尤其如此*this.

这是否意味着该clone()方法返回一个std::unique_ptr指向工厂类成员的?并且createInstance()总是返回同一个Factory类的成员?

我只是混淆std::make_unique< A >(*this)应该做什么,因为A在构造函数中std::string,而不是指向自身的指针.

class Base {
    public:
        virtual ~Base() {}
        virtual std::unique_ptr<Base> clone() = 0;
        virtual void print() = 0;
};

class A: public Base {
        std::string name_;
    public:
        A(std::string name ){name_ = name;};
        std::unique_ptr<Base> clone() override{
            return std::make_unique<A>(*this);
        };
        void print( ) override{
            std::cout << "Class A: " << name_;    
        };
        virtual ~A(){};
};

class …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers factory-pattern unique-ptr c++11

3
推荐指数
1
解决办法
760
查看次数

标签 统计

c++ ×1

c++11 ×1

factory-pattern ×1

smart-pointers ×1

unique-ptr ×1