0

我创建了一个引用向量的结构,并且在创建结构数组后分配给它时遇到问题。

这是我的结构:

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;

}

当我这样做时,它会编译,但是当我运行我的代码时会出现分段错误。

预先感谢您的帮助!

4

1 回答 1

0

它不应该编译,因为无法初始化引用'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;
}

但明智的做法是完全避免它。

于 2019-04-18T16:12:33.107 回答