当前位置:  开发笔记 > 编程语言 > 正文

是否可以在C++中"捆绑"模板参数?

如何解决《是否可以在C++中"捆绑"模板参数?》经验,为你挑选了1个好方法。

有没有办法将模板参数"捆绑"在一起以避免重复?

我有几个类和函数都使用相同的三个模板参数.拥有一次使用每个类/函数的函数并不罕见.结果代码非常快速地变得非常混乱.是否有更简洁的方法来编写此代码?

// ContextFactory is a pointer to functions that instantiate objects that are subtypes of MetricContext
template
using ContextFactory = MetricContext  *(*)(const char *);

template
    static vector> buildCFList() {
      vector> answer;
      answer.push_back(MetricContext::template make>);
      return answer;
    };

请注意,此函数的近一半是字符串的重复>,但每次使用此字符串都适用于不同的类或函数,因此我认为别名不起作用.

(如果它有帮助,这个函数的目的是创建一个指向函数的指针数组,这些函数将创建作为子类型的子对象的对象 MetricContext>



1> Martin Bonne..:

比@昆汀的是让你的模板一个较为具体的做法依赖于一个参数-预计将有类型定义 VertexID,EdgeMembershipTypeSetBitmap.

// ContextFactory is a pointer to functions that instantiate objects that are 
// subtypes of MetricContext
template
using ContextFactory = MetricContext  *(*)(const char *);

template
    static vector> buildCFList() {
      vector> answer;
      answer.push_back(MetricContext::template make>);
      return answer;
    };

请注意,当您想要实际使用其中一个typedef时,您需要使用例如:typename Types::VertexID.

(理想情况下,您会想出一个比Types模板参数更好的名称.)

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有