c – 如何解决Boost :: BGL模板< - >类循环依赖?
发布时间:2020-12-16 09:30:54 所属栏目:百科 来源:网络整理
导读:我在使用Boost图形库的邻接列表时遇到问题.这似乎是循环依赖问题: 我有一个模板的typedef T,它使用了一些类A.另外一个存储指向类型为T的对象的指针.现在编译器告诉我,T没有命名一个类型. 以下是我更具体文件的摘录: //graphdefinitions.hpp#include "lane.
我在使用Boost图形库的邻接列表时遇到问题.这似乎是循环依赖问题:
我有一个模板的typedef T,它使用了一些类A.另外一个存储指向类型为T的对象的指针.现在编译器告诉我,T没有命名一个类型. 以下是我更具体文件的摘录: //graphdefinitions.hpp #include "lane.hpp" #include "tie.hpp" typedef boost::adjacency_list<boost::listS,boost::listS,boost::directedS,Tie,Lane> Map; typedef boost::graph_traits<Map>::edge_descriptor edge_descriptor; //lane.hpp #include "graphdefinitions.hpp" class Lane { ... edge_descriptor *left,*right; }; //tie.hpp //no important includes here class Tie { ... }; 如何解决此依赖/包含顺序问题? 另一个编辑: 解决方法
您已经循环包含标题. Lane包括graphdefinitions,其中包括lane,包括graphdefinitions等.这是你的问题的原因.
编辑:我意识到这已经在OP中提到了.这个问题的解决方案是PIMPL. 编辑:我实际要做的是将typedef放在Lane类中.这应该以最好的方式解决问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |