Stack Overflow bei Klasse

F

Futzel

Hi,

sobald das Progamm startet bekomme ich einen Stack Overflow, und ich weiß nicht wo der Fehler in der Klasse liegen soll.

Hier einmal der betroffene Code:

C++:
template <class TV, int maxNodes>
class Digraph {

private:
	class Vertex 
	{
		public:
			Vertex() {     // Konstruktor 
			indegree = outdegree = ord = 0;
			visited = living = false;
			value = 0;
			}
			TV value;       // Markierung 
			int indegree;  // Eingangsgrad
			int outdegree; // Ausgangsgrad
			int ord;       // Ordnungszahl des Knotens
			bool visited;  // Knoten-"besucht"-Marke
			bool living;   // Knoten existiert
	};
	double noArc;
	int numvertices;				// Anzahl der Knoten eines Digraphen
	int numarcs;					// Anzahl der Kanten eines Digraphen
	Vertex vertex[maxNodes];		// repräsentiert Knoten des Digraphen
	double arc[maxNodes][maxNodes]; // repräsentiert bewertete Kanten des Digraphen (-1=keine Kante) ARC = EDGE

public:
	Digraph():noArc(-1.0)                       // Digraphen generieren
	{
		for (int i=0;i<maxNodes;i++)		//Adajenz-Matrix füllen
			for (int y=0;y<maxNodes;y++)
				arc[i][y]=noArc;

	}
	~Digraph()                      // Digraphen freigeben
	{
	}
	void InsertVertex (int n, TV m) // fügt neuen Knoten n mit Markierung m ein
	{
		if (n >= 0 && n < maxNodes)
		{
			vertex[n].value = m;
			vertex[n].living = true;
		}
	}
......//weitere Methoden

Aufruf in der main:

C++:
Digraph<char,1000> G;
	G.InsertVertex(3,'A');
	G.InsertVertex(2,'B');
	G.InsertVertex(1,'C');
	G.InsertVertex(4,'D');
 
Hi.

Der Stack eines Programmes ist begrenzt - unter Windows üblicherweise 1024kBytes.

Dein Objekt ist aber nunmal 8000kBytes groß. Leg es besser mal auf dem Heap an.

Gruß
 
Zurück