#include <iostream>
using namespace std;
class Parent // Holds the info for each node.
{
private:
string name;
int age;
string gender; // Will be specified in child class.
Parent *next;
public:
Parent(string newname, int newage)
{
name = newname;
age = newage;
}
void setGender(string myGender) { gender = myGender; }
void setNext(Parent *n) { next = n; }
};
class Child : public Parent // Create instances to store name, age, and gender.
{
public:
Child(string newname, int newage, string newgender) : Parent(newname, newage)
{
setGender(newgender);
}
};
class Group // Linked list containing all Parent/Child.
{
private:
int count;
Parent *top;
Parent *bottom;
public:
Group()
{
count = 0;
top = bottom = NULL;
}
void addChild(); // Defined in the function listed at the top of this post.
};
void Group::addChild() // Adding an instance of a child class.
{
Parent *now = bottom, *temp;
string name = "Jason", gender = "male";
int age = 21;
temp == new Child(name, age, gender);
if (count == 0)
{
top = bottom = temp;
temp->setNext(NULL); // Segmentation fault?
count++;
}
}
int main()
{
Group group;
cout << "Checkpoint 1." << endl;
group.addChild(); // Segmentation Fault.
cout << "Checkpoint 2." << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFBhcmVudCAvLyBIb2xkcyB0aGUgaW5mbyBmb3IgZWFjaCBub2RlLgp7CiAgICBwcml2YXRlOgogICAgICAgIHN0cmluZyBuYW1lOwogICAgICAgIGludCBhZ2U7CiAgICAgICAgc3RyaW5nIGdlbmRlcjsgLy8gV2lsbCBiZSBzcGVjaWZpZWQgaW4gY2hpbGQgY2xhc3MuCiAgICAgICAgUGFyZW50ICpuZXh0OwoKICAgIHB1YmxpYzoKICAgICAgICBQYXJlbnQoc3RyaW5nIG5ld25hbWUsIGludCBuZXdhZ2UpCiAgICAgICAgewogICAgICAgICAgICBuYW1lID0gbmV3bmFtZTsKICAgICAgICAgICAgYWdlID0gbmV3YWdlOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBzZXRHZW5kZXIoc3RyaW5nIG15R2VuZGVyKSAgeyBnZW5kZXIgPSBteUdlbmRlcjsgfQogICAgICAgIHZvaWQgc2V0TmV4dChQYXJlbnQgKm4pICB7IG5leHQgPSBuOyB9Cn07CgpjbGFzcyBDaGlsZCA6IHB1YmxpYyBQYXJlbnQgLy8gQ3JlYXRlIGluc3RhbmNlcyB0byBzdG9yZSBuYW1lLCBhZ2UsIGFuZCBnZW5kZXIuCnsKICAgIHB1YmxpYzoKICAgICAgICBDaGlsZChzdHJpbmcgbmV3bmFtZSwgaW50IG5ld2FnZSwgc3RyaW5nIG5ld2dlbmRlcikgOiBQYXJlbnQobmV3bmFtZSwgbmV3YWdlKQogICAgICAgIHsKICAgICAgICAgICAgc2V0R2VuZGVyKG5ld2dlbmRlcik7CiAgICAgICAgfQp9OwoKY2xhc3MgR3JvdXAgLy8gTGlua2VkIGxpc3QgY29udGFpbmluZyBhbGwgUGFyZW50L0NoaWxkLgp7CiAgICBwcml2YXRlOgogICAgICAgIGludCBjb3VudDsKICAgICAgICBQYXJlbnQgKnRvcDsKICAgICAgICBQYXJlbnQgKmJvdHRvbTsKCiAgICBwdWJsaWM6CiAgICAgICAgR3JvdXAoKQogICAgICAgIHsKICAgICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICB0b3AgPSBib3R0b20gPSBOVUxMOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBhZGRDaGlsZCgpOyAvLyBEZWZpbmVkIGluIHRoZSBmdW5jdGlvbiBsaXN0ZWQgYXQgdGhlIHRvcCBvZiB0aGlzIHBvc3QuCn07Cgp2b2lkIEdyb3VwOjphZGRDaGlsZCgpIC8vIEFkZGluZyBhbiBpbnN0YW5jZSBvZiBhIGNoaWxkIGNsYXNzLgp7CiAgICBQYXJlbnQgKm5vdyA9IGJvdHRvbSwgKnRlbXA7CiAgICBzdHJpbmcgbmFtZSA9ICJKYXNvbiIsIGdlbmRlciA9ICJtYWxlIjsKICAgIGludCBhZ2UgPSAyMTsKCiAgICB0ZW1wID09IG5ldyBDaGlsZChuYW1lLCBhZ2UsIGdlbmRlcik7CgogICAgaWYgKGNvdW50ID09IDApCiAgICB7CiAgICAgICAgdG9wID0gYm90dG9tID0gdGVtcDsKICAgICAgICB0ZW1wLT5zZXROZXh0KE5VTEwpOyAvLyBTZWdtZW50YXRpb24gZmF1bHQ/CiAgICAgICAgY291bnQrKzsKICAgIH0KfQoKaW50IG1haW4oKQp7CglHcm91cCBncm91cDsKCgljb3V0IDw8ICJDaGVja3BvaW50IDEuIiA8PCBlbmRsOwoKCWdyb3VwLmFkZENoaWxkKCk7IC8vIFNlZ21lbnRhdGlvbiBGYXVsdC4KCiAgICBjb3V0IDw8ICJDaGVja3BvaW50IDIuIiA8PCBlbmRsOwoKCXJldHVybiAwOwp9Cg==