#ifndef WRAPPER_H
#define WRAPPER_H
class WrapperImpBase
{
public:
WrapperImpBase(){}
virtual ~WrapperImpBase(){}
};
template<typename T>
class WrapperImp : public WrapperImpBase
{
public:
WrapperImp(T* ptr = 0)
:m_ptr(ptr){}
T* get() const { return m_ptr; }
private:
T* m_ptr;
};
class Wrapper
{
public:
template<typename T>
Wrapper(T* ptr)
{
m_imp = new WrapperImp<T>(ptr);
}
~Wrapper()
{
delete m_imp;
}
template<typename T>
T* get() const
{
if (m_imp)
{
WrapperImp<T> * imp = dynamic_cast<WrapperImp<T>*>(m_imp);
return imp->get();
}
return 0;
}
private:
WrapperImpBase* m_imp;
};
#endif
c++模板--类型擦除
最新推荐文章于 2024-08-21 06:34:43 发布