#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;
}