Let's put aside C++ first. The design is really hard to understand. Is it really needed to do it that way?

TOP