gpt4 book ai didi

c++ - 如何按类型生成指针 vector ?

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:31 24 4
gpt4 key购买 nike

我试试下面的代码

template<class B, class... Ds>
std::vector<std::shared_ptr<B>>& instances()
{
static std::vector<std::shared_ptr<B>> a = { std::shared_ptr<B>(new Ds)... };
return a;
}

但 VS2013 拒绝编译它(编译器已停止工作)。有任何错误或如何正确执行吗?

[more] 请不要Ds... 测试一下,比如

instances<int>();

VS2013 不工作。如何变通?

最佳答案

我使用 VS2013 Update 4 尝试了以下代码。它编译并运行正常。

// VariadicTest1.cpp : Defines the entry point for the console application.
#include <vector>
#include <memory>

template<class B, class... Ds>
std::vector<std::shared_ptr<B>> & instances()
{
static std::vector<std::shared_ptr<B>> a{ std::shared_ptr<B>(new Ds)... };
return a;
}

class Base
{};

class Derived1 : public Base
{};

class Derived2 : public Base
{};

int main()
{
std::vector<std::shared_ptr<Base>> sp = instances<Base, Derived1, Derived2>();
return 0;
}

关于c++ - 如何按类型生成指针 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com