我在这里定义了一个数据结构,名为:
typedef list <classSpec*> ClassSpecList;
我尝试根据返回某些匹配相同数据类型的值的函数将内容添加到列表中。在一个函数中,我有一个在这里定义的列表指针对象,我有另一个调用函数的语句。
ClassSpecList *answer = 0;
classSpec *thisanswer = parseClass(br);
基本上我尝试将thisanswer
返回的结果添加到我的主ClassSpecList
中。问题是,当我尝试
answer->push_back(new classSpec (*thisanswer));
它编译,但我得到一个段错误
当我尝试其他类似的东西时:
answer->insert(ClassSpecList.begin(), *thisanswer);
我不断遇到主要表达错误,我不知道为什么。我甚至尝试过没有typedef
的其他列表,我仍然得到了这些。
谢谢。
答案 0 :(得分:0)
您应首先初始化指针answer
,如:
ClassSpecList *answer = new ClassSpecList;
然后您可以将thisAnswer
添加到此列表中。
答案 1 :(得分:0)
这应该有效:
ClassSpecList *answer = new ClassSpecList;
answer->push_back(thisAnswer);
应该这样,通常建议:
ClassSpecList answer;
answer.push_back(thisAnswer);
如果可能,parseClass
不应该返回指针,您应该使用typedef list <classSpec> ClassSpecList;
。