我正在处理C++中的循环依赖问题。使用类模板的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
有一个循环依赖,因为力霸从libB使用转换器级和libB需要到现在的力霸的需要进行转换的对象类型 - 因为DataConverter :: convert返回一个Body或Header对象。
我想过用前向声明来解决这个问题 - 但这对我来说似乎并不是最干净的解决方案。总而言之,我的计划是提供可扩展的DataConverter解决方案。
你们会提出什么样的最佳做法?一个完整的不同的设计也欢迎:)
最佳, 塞巴斯蒂安
这看起来像内存泄漏给我 - 你几乎可以肯定要'DataConverter
().convert(数据)',没有'new'(除非'convert'以'delete this'结尾,但那会很可怕)。 –它比任何其他东西更伪代码:) –