读书人

一个重构的有关问题

发布时间: 2012-03-17 19:06:28 作者: rapoo

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

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())); 

读书人网 >C++

热点推荐