64,682
社区成员
发帖
与我相关
我的任务
分享
class TempClass
{
};
class MyInterfaceClass
{
public:
iterator Insert(TempClass *pObject)=0;
iterator Earse(TempClass *pObject)=0;
iterator Find(...)=0;
iterator Begin()=0;
iterator End()=0;
};
使用模板,将模板参数定义为任何一种vector/map/list等
template<typename Container>
class A
{
typedef typename Container::iterator iterator;
typedef typename Container::value_type value_type;
iterator insert(value_type v);
};
#include <iostream>
#include <string>
#include <vector>
using namespace std;
template<class Container>
class MyInterfaceClass
{
public:
typedef typename Container::iterator iterator;
virtual iterator Insert(string s)=0;
};
template<class Container>
class VectorContainer:public MyInterfaceClass<Container>
{
public:
iterator Insert(string s)
{
return container.insert(container.begin(),s);;
}
private:
Container container;
};
void main()
{
VectorContainer<vector<string>> d;
d.Insert("hello");
}
template<class Container>
class Derived:public MyInterfaceClass<Container>
{
....
//直接可以用iterator了
}
template<class Container>
class MyInterfaceClass
{
public:
typedef typename Container::iterator iterator;
iterator Insert(TempClass *pObject)=0;
iterator Earse(TempClass *pObject)=0;
iterator Find(...)=0;
iterator Begin()=0;
iterator End()=0;
};