#include <stdio.h>
#include <stdlib.h>
#include <string.h>
class Winery
{
public:
Winery(const char * const name, const char * const location, const int acres, const int rating) :
name(strdup(name)),
location(strdup(location)),
acres(acres),
rating(rating)
{
}
virtual ~Winery(void)
{
free(name);
free(location);
}
const char * const getName() const { return name; }
const char * const getLocation() const { return location; }
const int getAcres() const { return acres; }
const int getRating() const { return rating; }
private:
char *name;
char *location;
int acres;
int rating;
};
struct Node
{
Node(const Winery& winery);
Winery item;
};
Node::Node(const Winery& winery) :
item(winery.getName(), winery.getLocation(), winery.getAcres(), winery.getRating())
{
}
int main()
{
Winery winery("Mission Hill Winery", "Kelowna, BC, Canada", 646, 4);
Node node(winery);
printf("%s\n", node.item.getName());
printf("%s\n", node.item.getLocation());
printf("%i\n", node.item.getAcres());
printf("%i\n", node.item.getRating());
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKY2xhc3MgV2luZXJ5CnsKcHVibGljOgoKICAgIFdpbmVyeShjb25zdCBjaGFyICogY29uc3QgbmFtZSwgY29uc3QgY2hhciAqIGNvbnN0IGxvY2F0aW9uLCBjb25zdCBpbnQgYWNyZXMsIGNvbnN0IGludCByYXRpbmcpIDoKICAgICAgICBuYW1lKHN0cmR1cChuYW1lKSksCiAgICAgICAgbG9jYXRpb24oc3RyZHVwKGxvY2F0aW9uKSksCiAgICAgICAgYWNyZXMoYWNyZXMpLAogICAgICAgIHJhdGluZyhyYXRpbmcpCiAgICB7CiAgICB9CgogICAgdmlydHVhbCB+V2luZXJ5KHZvaWQpCiAgICB7CiAgICAgICAgZnJlZShuYW1lKTsKICAgICAgICBmcmVlKGxvY2F0aW9uKTsKICAgIH0KCiAgICBjb25zdCBjaGFyICogY29uc3QgZ2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWU7IH0KICAgIGNvbnN0IGNoYXIgKiBjb25zdCBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uOyB9CiAgICBjb25zdCBpbnQgZ2V0QWNyZXMoKSBjb25zdCB7IHJldHVybiBhY3JlczsgfQogICAgY29uc3QgaW50IGdldFJhdGluZygpIGNvbnN0IHsgcmV0dXJuIHJhdGluZzsgfQoKcHJpdmF0ZToKICAgIGNoYXIgICAgKm5hbWU7CiAgICBjaGFyICAgICpsb2NhdGlvbjsKICAgIGludCAgICAgYWNyZXM7CiAgICBpbnQgICAgIHJhdGluZzsKfTsKCgoKc3RydWN0IE5vZGUKewogICAgTm9kZShjb25zdCBXaW5lcnkmIHdpbmVyeSk7CiAgICBXaW5lcnkgaXRlbTsKfTsKCk5vZGU6Ok5vZGUoY29uc3QgV2luZXJ5JiB3aW5lcnkpIDoKaXRlbSh3aW5lcnkuZ2V0TmFtZSgpLCB3aW5lcnkuZ2V0TG9jYXRpb24oKSwgd2luZXJ5LmdldEFjcmVzKCksIHdpbmVyeS5nZXRSYXRpbmcoKSkKewp9CgppbnQgbWFpbigpCnsKICAgIFdpbmVyeSB3aW5lcnkoIk1pc3Npb24gSGlsbCBXaW5lcnkiLCAiS2Vsb3duYSwgQkMsIENhbmFkYSIsIDY0NiwgNCk7CgogICAgTm9kZSBub2RlKHdpbmVyeSk7CiAgICAKICAgIAogICAgcHJpbnRmKCIlc1xuIiwgbm9kZS5pdGVtLmdldE5hbWUoKSk7CiAgICBwcmludGYoIiVzXG4iLCBub2RlLml0ZW0uZ2V0TG9jYXRpb24oKSk7CiAgICBwcmludGYoIiVpXG4iLCBub2RlLml0ZW0uZ2V0QWNyZXMoKSk7CiAgICBwcmludGYoIiVpXG4iLCBub2RlLml0ZW0uZ2V0UmF0aW5nKCkpOwp9