我正在处理 C++ 中的循环依赖问题。
情况如下所示:
libA.so:
- Body.cpp
- Header.cpp
- DataObject.cpp
- DataObject::read(boost::asio::streambuf* data)
{
boost::asio::streambuf data;
....
body = (new DataConverter<Body>)->convert(&data);
header = (new DataConverter<Header>)->convert(&data);
}
libB.so:
- DataConverter.cpp
-> DataConverter<T>
-> T* DataConverter<T>::convert(boost::asio::streambuf* data)
libA.so <-> libB.so
存在循环依赖关系,因为 libA 使用来自 libB 的 Converter-Class,而 libB 现在需要了解需要转换的 libA 的对象类型 - 因为 DataConverter::convert 返回一个 Body 或 Header 对象。
我想过用前向声明来解决这个问题——但这对我来说似乎不是最干净的解决方案。总而言之,我的计划是提供一个可扩展的 DataConverter 解决方案。
你们会建议什么作为最佳实践?也欢迎完全不同的设计:)
最好的,塞巴斯蒂安