Class A contains a pointer to abstract class B (only headers implemented):
// A.h
#include "B.h"
class A {
public:
A();
virtual ~A();
pointBto(B* b_); // { this.b = b_; }
private:
B* b;
}
// B.h
class B {
public:
B();
virtual ~B();
virtual void b_method() = 0;
}
Classes C and D inherit B.
// C.h
#include "B.h"
Class C : public B {
public:
C();
~C();
virtual b_method();
}
// D.h
#include "B.h"
Class D : public B {
public:
D();
~D();
virtual b_method();
}
Application reads a string and depending on that, creates a new object of class C or D and points b to the created object.
Note: I don't want to create an endless chain of
if (string_ == "C")
{
a_.pointBto(new C());
}
else if (string_ == "D")
{
a_.pointBto(new D());
}
else ...