Присвоение ссылки внутри структуры - PullRequest
0 голосов
/ 18 апреля 2019

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

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

struct name{
        std::vector<Student> &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 Ответ

0 голосов
/ 18 апреля 2019

Он не должен компилироваться, потому что нет способа инициализировать ссылку '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 = &StudentVector;
}

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

...