首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个重构的有关问题

2012-03-17 
一个重构的问题请问以下代码怎么重构比较好呢FilterInf* pFilterInf new MpcAviSourceSplitterInf()CDs

一个重构的问题
请问以下代码怎么重构比较好呢

  FilterInf* pFilterInf = new MpcAviSourceSplitterInf();
CDsFilter* pFilter = new CDsFilterFile(*pFilterInf);
m_source.AddTail(pFilter);
delete pFilterInf;
pFilterInf = NULL;


pFilterInf = new MpcFlvSourceSplitterInf();
pFilter = new CDsFilterInternal(*pFilterInf);
m_source.AddTail(pFilter);
delete pFilterInf;
pFilterInf = NULL;

pFilterInf = new MpcDSMSourceSplitterInf();
pFilter = new CDsFilterDMO(*pFilterInf);
m_source.AddTail(pFilter);
delete pFilterInf;
pFilterInf = NULL;


谢谢

[解决办法]
用宏吧,只有类型不一致
[解决办法]
用auto_ptr来自动释放指针。代码如下:

C/C++ code
auto_ptr<FilterInf> pFilterAviInf(new MpcAviSourceSplitterInf());m_source.AddTail(new CDsFilterFile(*pFilterAviInf.get()));auto_ptr<FilterInf> pFilterFlvInf(new MpcFlvSourceSplitterInf());m_source.AddTail(new CDsFilterInternal(*pFilterFlvInf.get()));auto_ptr<FilterInf> pFilterDSMInf(new MpcDSMSourceSplitterInf());m_source.AddTail(new CDsFilterDMO(*pFilterDSMInf.get())); 

热点排行