【问题标题】:Is there an issue with conflicting class names using boost?使用 boost 的类名冲突是否存在问题?
【发布时间】:2016-06-27 23:54:29
【问题描述】:

我正在使用 boost 库中的 push relabel max flow 算法实现图的最大闭合求解器。

我有一个名为 Graph 的自定义类,它包含所有问题信息;但是,我正在查看 boost 库中 push relabel 算法的实现,它还定义了一个名为 Graph 的自定义类。这些冲突的类名会导致问题吗?

我的求解器只是一个较大项目的一小部分,所以很遗憾,我无法控制类名。

【问题讨论】:

  • 请阅读命名空间。

标签: c++ boost


【解决方案1】:

如果名称位于不同的命名空间中,并且您不会做像using namespace whatever 这样的傻事,那没有问题。

【讨论】:

  • 所以如果它有typedef <some type definition> Graph; 并且我定义了一个名为Graph 的类;那么定义就没有问题,比如std::vector<Graph>,只要我不说“使用命名空间提升”?
  • 如果有一个名为boost::Graph 的类并且你编写了一个名为my_wonderful_stuff::Graph 的类(甚至是Graph,在全局命名空间中),那么这两个名称是不同的。您可以与各种形式的using 产生冲突,所以不要在没有考虑清楚的情况下这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 2016-01-23
相关资源
最近更新 更多