I have a diamond-shape set of derived classes:
A / \\ B C \\ / D
class A { //this is a pure virtual class protected