//
//---- begin file library.h ----
//
#ifndef CLASS_POLICY
# define CLASS_POLICY "default policy"
#endif
//
//---- begin file container.h ----
//
#include "library.h"
#include <string>
#include <iostream>
template <class ElementType>
class MyContainer {
public:
MyContainer(const std::string iName) : instanceName(iName)
{}
// class implementation
// ...
// performs the policy
void doPolicy();
// a service that uses the policy
void performService() { doPolicy(); }
const std::string instanceName;
};
// elements for example's sake
template<class T>
struct Element1 {
// ...
};
template<class T>
struct Element2 {
// ...
};
template <class ElementType>
void MyContainer<ElementType>::doPolicy()
{
std::cout << "Policy is: " << CLASS_POLICY << std::endl;
}
//
//---- begin file user.cpp ----
//
#include "container.h"
int main() {
MyContainer<Element1<int> > c("object1");
c.performService();
return 0;
}
End of Listing