Как часть задания C ++, чтобы узнать больше об указателях и объектах, у меня есть класс, который представляет членов семьи. Одним из параметров является векторный указатель «kids», который должен содержать объекты того же класса. Мне сказали использовать перегрузку операторов с помощью «<» для добавления вновь созданных объектов в поле «дети» другого объекта. Вот что у меня сейчас есть: </p>
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
class Family{
public:
string name;
int age;
//An object pointer of Family to represent a spouse
Family * spouse;
//a vector pointer of Family to represent children
vector<Family>* kids;
/**
* A constructor that takes 4 arguments
* @param n takes default 'unknown'
* @param a takes default 18
* @param s takes default NULL
* @param v takes default NULL
*/
Family( string n="Unknown", int a=18, Family * s=NULL,vector<Family> * v=NULL){
name=n;
age=a;
kids=new vector<Family>;
spouse=s;
}
/**2pts
* Create a method that overloads <
* The method will add a Family object to the list of children
* @param a Family object
*/
int kCount = 0;
void operator<(Family f) {
(*kids)[kCount] = f;
}
};
int main(int argc, char** argv) {
//Declaring an object F using a name and age=35 representing a female.
Family F("Nicky",35);
//Declaring an object M using a name, age =39 and spouse being the previous object
Family M("Nick",39,&F);
Family c0("Ricky", 15);
Family c1("Bicky", 12);
Family c2("Dicky", 9);
Family c3("Micky", 6);
//2pts Add the kids to M using the operator <
M < c0;
return 0;
}
Когда я пытаюсь запустить это, я получаю segfault. Я все еще очень неопытен с указателями, поэтому я действительно не знаю, как решить эту проблему.