#include <string>
class Message {
std::string serialize() { return "TODO"; }
Message* deserialize() {
return nullptr;
}
};
class Customer : public Message {
private:
int _internal_bookkeeping_bits_;
bool _has_name_ = false;
bool _has_age_ = false;
bool _has_address_ = false;
std::string name_;
int age_;
std::string address_;
public:
bool has_name() { return _has_name_; }
bool has_age() { return _has_age_; }
bool has_address() { return _has_address_; }
std::string name() { return name_; }
int age() { return age_; }
std::string address() { return address_; }
void set_name(std::string name) {
name_ = name;
_has_name_ = true;
}
void set_age(int age) {
age_ = age;
_has_age_ = true;
}
void set_address(std::string address) {
address_ = address;
_has_address_ = true;
}
};
class ProductOrder : public Message {
private:
int _internal_bookkeeping_bits_;
bool _has_product_name_ = false;
bool _has_amount_ = false;
std::string product_name_;
int amount_;
public:
bool has_product_name() { return _has_product_name_; }
bool has_amount() { return _has_amount_; }
std::string get_product_name() { return product_name_; }
int get_amount() { return amount_; }
void set_product_name(std::string product_name) {
product_name_ = product_name;
_has_product_name_ = true;
}
void set_amount(int amount) {
amount_ = amount;
_has_amount_ = true;
}
};
int main(int argc, char **argv) {
Customer customer;
customer.set_name("C. Ustomer");
customer.set_address("123 Fake St.");
ProductOrder order;
order.set_product_name("widget");
order.set_amount(100);
return 0;
}