Why this endline gives Segmentation Fault (core dumped)

ostream& operator<<(ostream& stream, Network& network)
	{
		int a;
		int s = network.nodes.size();
		for (a=0;a<s;a++)
		{
				stream << *(network.nodes[a]);	
		}
	}

ostream& operator<< (ostream& stream, const Node& node)
{
		stream << node.label ;
}


int main()
{
Node * n = new Node("W");
cout << *n ; // IT WORKS
cout << *n <<endl; // IT WORKS

Network * x = new Network();
x->addNode("A");
cout << *x // IT WORKS
cout << *x << endl // THE endl causes segmentation fault  (core dumped). WHY??What should i do?

	
}

Open in new window

Any help is appreciated.
codeBuilderAsked:
Who is Participating?
 
jkrConnect With a Mentor Commented:
Your operator is not returning the stream instance, and I have to say I am quite surprised that this compiled without errors or warnings - it should be

ostream& operator<<(ostream& stream, Network& network)
	{
		int a;
		int s = network.nodes.size();
		for (a=0;a<s;a++)
		{
				stream << *(network.nodes[a]);	
		}

                return stream; // <-- this one is important
	}

Open in new window

0
 
codeBuilderAuthor Commented:
OH NO! How bad i forgot it :(
In addition , i am surprised now how it can compile correctly , but maybe it won't give any warning because i don't state any extra option while compiling . I compile as the following: g++ -o example example.cpp
0
 
codeBuilderAuthor Commented:
Point shot
0
All Courses

From novice to tech pro — start learning today.