提升图表。与继承等效的技术

Boost Graphs. Equivalent technique to Inheritance

我对 Boost Graphs 还很陌生,也许我的问题有解决方案。

我有一个函数可以对图形执行特定计算。它期望具有特定属性的图形,例如它期望所有边都有一个数值权重值,所有顶点都有一个数值字段(我们称之为颜色,它会在调用我的函数之前预设为一些有意义的值)。

假设我有一组不同的图形类型,它们在 link 上都有数字权重 属性 并且它们的所有顶点都有数字颜色,但是它们还有其他属性顶点和边。 我的问题是如何将我的函数用于所有这些图表类型?

  1. 自然对我来说这似乎是一种继承,如果提升图是 类 那么我的函数可以在基数 类 上运行,并且我可以将指针传递给子对象 类等
  2. 最初我一直在尝试声明我的函数以接受模板图参数,但很快我意识到它不起作用(或者我无法弄清楚如何正确地做到这一点)。

谢谢!

"technique equivalent to inheritance" 被称为 "polymorphism" 并且 BGL 支持 "static polymorphism"(选项 2!)。

这是通用库的按需付费方法。

可以改编任何类型(层次结构)以用于 BGL 的静态多态性:

也使用 属性 映射到 link 属性(粗细、颜色)到 vertices/edges。

  • map set/get requests into C++ class/structure changes