使用模板构造函数make_shared

时间:2014-03-11 17:49:45

标签: c++ class templates c++11 make-shared

我有一个带有模板构造函数的类,并希望有一个shared_pointer。如:

class A;
typedef std::shared_ptr<A> A_ptr;

class A {
public:
    template <typename T>
    A(Arg1 arg1, Arg2 arg2, T data) { ... do something with data ... }

    static A_ptr New(Arg1 arg1, Arg2 arg2, T data) {
        return make_shared<A>(arg1,arg2,data);
    }
};

我知道make_shared的行不对,但不知道解决方案。是否可以使用模板构造函数调用make_shared?我是否需要制作新的&#39;运行模板一并以某种方式传入A<T>?...

1 个答案:

答案 0 :(得分:2)

A::New转换为功能模板

template<typename T>
static A_ptr New(Arg1 arg1, Arg2 arg2, T data) {
    return std::make_shared<A>(arg1,arg2,data);
}