关于make_shared无法访问非公有构造函数的解决方法

方法一:

class Obj {

    struct enable_shared : public Obj {
        enable_shared(...) : Obj(...) { }
    };
     
    void someFunction() {
        auto ptr = std::make_shared<enable_shared>(...);
    }

private:
    Obj(...);

};

方法二:

std::shared_ptr<Obj> pA{new Obj()};
struct enable_shared : public PriorityThreadPool
    {
      enable_shared(thread_num_t core_numthread_num_t extension_num
        : PriorityThreadPool(core_num, extension_num) { }
    };
    // ��̬�ֲ����� Meyers singleton ������
    // ���Ƿ��صIJ������ã��Ƿ�ֹ�û�ֱ�ӶԷ���ֵ����reset������ǰ�����̳߳�
    static ptr_type instance = std::make_shared<enable_shared>(core_num, extension_num);
原文地址:https://www.cnblogs.com/yxsrt/p/13471081.html