C++ class package design inheritance