我找到了一个非常有用的答案,如何在Modifying vertex properties in a Boost::Graph下使用boost :: graph创建模板化图形
对我来说,只要我在Graph-class本身中对图形进行所有工作,这就非常方便 .
但是,可能需要从外部访问信息,例如,一个人可能想要实现一个Printer-class,它接受一个Graph-object并打印出所有存储的信息 .
在这种情况下,访问所有顶点(例如通过顶点迭代器)可能很方便 . 遗憾的是,这不起作用,因为所有typedef都是在Graph-class中完成的,并且这些信息无法从外部访问,因此Printer-class不知道顶点迭代器等是什么 .
我怎么能解决这个问题,仍然保持模板化的方面?
谢谢 .
3 回答
但是typedef是公共的,所以你可以从外面访问它们:
现在这是以下内容:
如果未指定T,请注意
我不太关注......
typedef
都是公开的,因此它们可以从外面很方便地访问 . 访问依赖名称时,请注意使用typename
:你的问题对我来说有点混乱,但我想你正在寻找这样的事情:
然后,按照您链接的示例,您将得到以下内容:
正如Konrad和其他人已经在这个帖子中所说的那样,你从该类中获取迭代器和其他typedef没有问题,你可以保持你的解决方案非常通用 . 顺便说一句,您选择的打印解决方案会产生一些期望(在我的情况下,顶点类型必须能够与
ostream
的operator<<
一起使用),但是这可以在不损失解决方案的通用方面的情况下进行处理 .