Добавить объекты в вектор, на который указывает другой объект того же класса - PullRequest
0 голосов
/ 10 апреля 2020

Как часть задания 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. Я все еще очень неопытен с указателями, поэтому я действительно не знаю, как решить эту проблему.

1 Ответ

0 голосов
/ 10 апреля 2020

После подсказки одного из комментаторов я просмотрел информацию о добавлении объектов в векторы и нашел решение.

void operator<(Family f) {
    (*kids).push_back(f);
}

// in main()...

Family c0("Ricky", 15);
M < c0;

Спасибо 1201ProgramAlarm за подсказку!

...