C++ component framework