#include <iostream>
#include <cstdint>
using namespace std;

class Parent{
    private:
        uint8_t age;

        struct HealthInfo {
            uint16_t stepsADay;
            uint8_t levelsADay;
        }; 
        HealthInfo healthInfo;

    public:
        int setAge(uint8_t a_age);
        uint8_t getAge();

        int setHealthInfo(uint16_t a_stepsADay,uint8_t a_levelsADay);
        HealthInfo getHealthInfo();
};

   // omitting (de-)/constructor for readability
   int Parent::setAge(uint8_t a_age){
       this->age = a_age;
       return 0;
   }
   uint8_t Parent::getAge(){
       return this->age;
   }

   int Parent::setHealthInfo(uint16_t a_stepsADay,uint8_t a_levelsADay){
       this->healthInfo.stepsADay = a_stepsADay;
       this->healthInfo.levelsADay= a_levelsADay;
       return 0;
   }
   Parent::HealthInfo Parent::getHealthInfo(){
       return this->healthInfo;
   }

uint32_t createMessage(Parent *thatParent){
   auto  tmpHealthData=thatParent->getHealthInfo();

 // create message to give to doctor
  uint32_t messageToDoctor = (thatParent->getAge() <<24)
                             + (tmpHealthData.stepsADay<<8)
                             + (tmpHealthData.levelsADay);
 return messageToDoctor; 
}

int main() {
 Parent papa;  // c++ is not java no Parent x = new Parent() unless you use pointers

 papa.setAge(54);
 papa.setHealthInfo(1000,6);
 auto x = papa.getHealthInfo(); 
 cout << x.stepsADay;

 // do other stuff ...

 uint32_t message= createMessage(&papa);
 // send message ... 

 return 0;
}