Остальное это больше специфика языка С++, потому что для отрисовки приходится делать что-то вроде
DebugCommand::Add cmd;
cmd.data = std::shared_ptr<DebugData::PlacedText>( new DebugData::PlacedText( text ) );
debugInterface.send( cmd );
Это нихрена не удобно и приходится писать врапперы