饰面是基类参数化的一个应用,例子
#include <iostream>
using namespace std;
template<typename T>
class AbstractClass: public T
{
public:
static void TemplateMethod()
{
AbstractClass<T>::F1();
AbstractClass<T>::F2();
}
};
class ConcreteClass1
{
public:
static void F1()
{
cout<< "ConcreteClass1 F1" <<endl;
}
static void F2()
{
cout<< "ConcreteClass1 F2" <<endl;
}
};
class ConcreteClass2
{
public:
static void F1()
{
cout<< "ConcreteClass2 F1" <<endl;
}
static void F2()
{
cout<< "ConcreteClass2 F2" <<endl;
}
};
void main()
{
AbstractClass<ConcreteClass1>::TemplateMethod();
AbstractClass<ConcreteClass2>::TemplateMethod();
}