一个重构的问题
请问以下代码怎么重构比较好呢
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()));