示例自定义shared_ptr - 如何传递构造函数参数 - 我在这里使用可变参数模板吗?

时间:2018-02-16 00:46:27

标签: c++ c++11

所以我正在尝试编写一个非常简单的共享指针类,只是为了练习而且我对如何将参数传递给我想要包含在我的共享指针中的类感到困惑。我目前并不担心我所做的共享指针类的逻辑。我只想知道如何将参数传递给它。

这是代码

struct foo
{
    foo(int a,std::string str)
    {
    }
    int a;
};

template <typename t>
class shared
{
    public:
    shared() 
    {
        _mtype = new t();
        counter = counter +1;
    }

   ....
   ....
};

int main()
{
    shared<foo> f(12,"Hello"); //This will fail - How do I modify shared constructor to accept generic no and type of parameters so that it could initialize those types with the parameters
    f->a = 12;
    std::cout << f->a;
}

目前foo有一个int和一个string作为构造函数,它很容易硬编码到shared构造函数中,只需使用{的构造函数参数初始化foo {1}}。我想知道如何使我的shared类更通用,所以我可以将它用于构造函数参数未知的类。我不是很熟悉可变参数模板,但我想要使用它?

1 个答案:

答案 0 :(得分:0)

是的,你是对的,你需要为构造函数声明和定义一个可变参数模板。

template <typename Args...>
shared(Args&&... args) 
{
    _mtype = new t(std::forward<Args>(args)...);
    counter = counter +1;
}