Lots of people, including myself, have to actively learn how to think to get a simple clean design. This is particularly true when using C++ where we are not fenced in and therefore have to create our own boundaries. A port on an interface is outside that boundary in my current thinking.
Even well practised, seemingly OO, C++ guys don't always get it whereas Java guys generally always do. When you hear a Java guy criticise C++ he's often, sometimes indirectly, referring to the fact that C++ doesn't actually force the concept of an interface. It's left up to the programmer to ensure that the 'class' is really an ABC (Abstract Base Class).
One of the stumbling blocks to C++ guys learning, and embracing, interfaces was the general panic around multiple-inheritance (prohibited by Java). It's not the same as multiple-realization (allowed by Java). Trying to use interfaces whilst avoiding multiple inheritance results either in fat interfaces, and low reusability, or 'inheritance' between interfaces, and a complicated mess.
http://www.artima.com/intv/modern.html
Thanks for sticking with the thread and being open about what you're trying to achieve.