Присвоение ссылке внутри структуры

#c 98

#c 98

Вопрос:

Я создал структуру со ссылкой на вектор, и у меня возникли проблемы с присвоением ей после того, как я создал массив структур.

Это моя структура:

 struct name{
        std::vector<Student> amp;A;
        int a;
        int b;
};
 

В моем основном я создал вектор типа класса Student и присвоил значения вектору, который я назвал StudentVector . Я пытаюсь объявить массив имени структуры, который содержит ссылку на мой вектор StudentVector:

 void main(){

std::vector <Student> StudentVector;

....

....

....

name data[5];

for (int i=0;i<5;i  ){


           data[i].A = StudentVector;

}
 

Когда я делаю это, он компилируется, но при запуске моего кода я получаю ошибку сегментации.

Заранее благодарю вас за помощь!

Ответ №1:

Он не должен компилироваться, потому что нет способа инициализировать ссылку ‘A’. Если вам действительно нужно сделать это таким образом, замените ссылку на указатель:

 struct name {
    std::vector<Student> *A;
    int a;
    int b;
};

std::vector<Student> StudentVector;

for (int i = 0; i < 5; i  ) {
    data[i].A = amp;StudentVector;
}
 

Но было бы разумно полностью избежать этого.

Комментарии:

1. Большое вам спасибо!