1

我有一个带有模板构造函数的类,并且想要一个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使用模板构造函数调用吗?我是否需要将“新建”功能设为模板并以A<T>某种方式传入?...

4

1 回答 1

2

转换A::New为函数模板

template<typename T>
static A_ptr New(Arg1 arg1, Arg2 arg2, T data) {
    return std::make_shared<A>(arg1,arg2,data);
}
于 2014-03-11T17:56:16.037 回答