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テンプレートコンストラクターで呼び出すことさえ可能ですか? 「New」関数をテンプレートにして、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 に答える