我正在尝试创建对象列表(不使用
std::list
)包含指向下一个和上一个对象的指针。出于某种原因,下面的代码抛出了一个分段错误,但是当我注释掉
std::cout
代码不会引发分段错误,当我不使用cmake编译时,而是使用clang++。在这两种情况下,我都使用C++14。
#include <iostream>
class myListElement
{
myListElement *next;
double val;
public:
myListElement(int entry, myListElement *newPrev):val(entry), prev(newPrev){}
void setNext(myListElement *newPrev){prev = newPrev;}
};
class myList
{
myListElement *first,*last;
public:
myList(){}
~myList(){}
void push_back(int entry)
{
myListElement temp(entry,last);
if(last != nullptr)
{
last->setNext(&temp);
}
}
};
int main()
{
int n = 1000;
myList my_list;
//std::cout << "\ntest";
for(int i = 0; i < n; ++i)
{
my_list.push_back(i+1);
}
}
怎么会是这样?
很抱歉代码太长,但我找不到任何要删除的部分,除非出现分段错误并保留程序的意义。
谢谢你的每一点帮助!