Re: Mix Static and dynamic Polymorphism
On 07/11/09 15:16, Jun wrote:
Hello all,
I just tried to mix static and dynamic polymorphism together.
I've a vector to store all the elements, and the implementations
of elements are slightly different. I used Policy-based design:
struct Interface{
virtual void run(void) = 0;
virtual void execute(void) = 0;
};
struct PolicyA{
void execute(){
// implementing Policy A;
}
};
struct PolicyB{
void execute(){
// implementing Policy B;
}
};
template<class Policy>
struct Base : public Policy, public Interface{
void run(){
// implementing base ;
}
}
Anyway, those codes don't compile .... Anyone has some suggestions ?
Thank you in advance.
You could try inheritance chaining:
struct Interface {
virtual void run() = 0;
virtual void execute() = 0;
};
template<class Itf>
struct PolicyA : Itf {
void execute() {
// implementing Policy A;
}
};
template<class Itf>
struct PolicyB : Itf {
void execute() {
// implementing Policy B;
}
};
template<class Policy>
struct Base : Policy {
void run(){
// implementing base ;
}
};
typedef Base<PolicyA<Interface> > BaseA;
typedef Base<PolicyB<Interface> > BaseB;
int main()
{
Interface const& a = BaseA();
Interface const& b = BaseB();
}
--
Max
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]