首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩短std::shared_ptr<std::vector<shared_ptr<VariousClassNames>>>的使用

缩短std::shared_ptr<std::vector<shared_ptr<VariousClassNames>>>的使用
EN

Stack Overflow用户
提问于 2020-01-10 13:08:01
回答 2查看 73关注 0票数 0

我正在检查我的代码,我发现我经常使用以下结构:

std::shared_ptr<std::vector<shared_ptr<ClassA>>>

auto instance = std::make_shared<std::vector<shared_ptr<ClassB>>>()等。

是否有为std::make_shared<std::vector<shared_ptr<$CLASSNAME$>>>std::shared_ptr<std::vector<shared_ptr<$CLASSNAME$>>>短语设置快捷方式的有效机会?

类似于using svs<ClassA> = std::shared_ptr<std::vector<shared_ptr<ClassA>>> (无效语法;不编译!)

还有比使用模板更好的机会吗?

问候

EN

回答 2

Stack Overflow用户

发布于 2020-01-10 13:11:12

还有比使用模板更多的机会吗?

不,模板就是你想要的。

这是正确的:

代码语言:javascript
复制
template <typename ClassA>
using svs<ClassA> = std::shared_ptr<std::vector<shared_ptr<ClassA>>>;

除非你自己为不同的情况写了很多不同的别名,否则没有其他的方法可以让它工作。

顺便说一句,这是很间接的。你确定你需要这么多层的shared_ptr

票数 3
EN

Stack Overflow用户

发布于 2020-01-10 13:10:58

使用模板别名,您可以这样做:

代码语言:javascript
复制
template <typename T>
using svs = std::shared_ptr<std::vector<std::shared_ptr<T>>>;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59682338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档