我正在检查我的代码,我发现我经常使用以下结构:
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>>> (无效语法;不编译!)
还有比使用模板更好的机会吗?
问候
发布于 2020-01-10 13:11:12
还有比使用模板更多的机会吗?
不,模板就是你想要的。
这是正确的:
template <typename ClassA>
using svs<ClassA> = std::shared_ptr<std::vector<shared_ptr<ClassA>>>;除非你自己为不同的情况写了很多不同的别名,否则没有其他的方法可以让它工作。
顺便说一句,这是很间接的。你确定你需要这么多层的shared_ptr吗
发布于 2020-01-10 13:10:58
使用模板别名,您可以这样做:
template <typename T>
using svs = std::shared_ptr<std::vector<std::shared_ptr<T>>>;https://stackoverflow.com/questions/59682338
复制相似问题