<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Probleme mit list aus der STL.]]></title><description><![CDATA[<p>Hi Leute ich bin hier leicht am verzweifeln, also ich will eine &quot;dynamische Klasse&quot; basteln und hab mir gedacht das Listen nicht das schlechteste wären hab leider kaum erfahrung in C++ und bei Listen und Klassen eigentlich keine.<br />
Mein Werk bis Dato.</p>
<pre><code class="language-cpp">// ship.cpp : Defines the entry point for the console application.
//

#include &quot;stdafx.h&quot;
#include &lt;list&gt;
#include &lt;iostream&gt;
using namespace std;

#define xG 10
#define yG 10

char Grid [10][10];
int Längen[6]={2,4,1,3,4,2};

class ship {

private:
	int länge;
	int xy[2];

public:
	ship (){}
	ship (int a[],int ausrichtung,int id);
	void zw (int a[],int ausrichtung,int id);
};

ship::ship(int a[],int ausrichtung,int id)
{   
	int posX= xy[1];
	int posY= xy[2];
	länge = a[id];
	if (ausrichtung == 90) 
	{
		Grid[posX][posY]='X';
		for (int i=0;i&lt;=länge;i++)
		{
			Grid[posX+=1][posY] = 'X';
		}
	}

		if (ausrichtung == 180) 
	{
		Grid[posX][posY]='X';
		for (int i=0;i&lt;=länge;i++)
		{
			Grid[posX][posY+=1] = 'X';
		}
	}

			if (ausrichtung == 270) 
	{
		Grid[posX][posY]='X';
		for (int i=0;i&lt;=länge;i++)
		{
			Grid[posX=-1][posY] = 'X';
		}
	}

				if (ausrichtung == 0) 
	{
		Grid[posX][posY]='X';
		for (int i=0;i&lt;=länge;i++)
		{
			Grid[posX][posY=-1] = 'X';
		}
	}

};

void schifflist (int anzahl)
{

	std::list&lt;ship*&gt; liste;

	for (int i=0;i&lt;=anzahl;i++)
	{
		liste.push_back(new ship(Längen,90,i));
//		liste.getAt(i).zw(Längen,90,i);

	}

}

void gridzeichnend () 
{
	for (int i=0;i&lt;=9;i++)
	{   

		for(int k=0;k&lt;=9;k++)
		{
			Grid[i][k] = '~';

		}
	}
}

void gridausgabe () 
{
	for (int i=0;i&lt;=9;i++)
	{   
		printf (&quot;\n&quot;);
		for(int k=0;k&lt;=9;k++)
		{
			printf(&quot;%c&quot;, Grid[i][k]);

		}
	}
  printf (&quot;\n&quot;);
}

int main (void) 
{

gridzeichnend ();
schifflist(6);
gridausgabe ();

}

//Vereinbarung
//1. Es werden immer die Koordinaten des Bugs angeben, anschließend die Gradzalh in die das Heck zeigt
</code></pre>
<p>Nun stüzt das Programm einfach ab,mein zweites Problem ist das ich noch nicht wirklich weiß, wie ich die Elemte aus der Liste herausbekommen kann um dann einzelenen Werte zu aktualisieren, d.h ich will z,b liste(i).längeSetzen(Wert)<br />
Danke fürs lesen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202299/probleme-mit-list-aus-der-stl</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 15:06:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202299.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Jan 2008 18:14:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit list aus der STL. on Wed, 09 Jan 2008 18:14:37 GMT]]></title><description><![CDATA[<p>Hi Leute ich bin hier leicht am verzweifeln, also ich will eine &quot;dynamische Klasse&quot; basteln und hab mir gedacht das Listen nicht das schlechteste wären hab leider kaum erfahrung in C++ und bei Listen und Klassen eigentlich keine.<br />
Mein Werk bis Dato.</p>
<pre><code class="language-cpp">// ship.cpp : Defines the entry point for the console application.
//

#include &quot;stdafx.h&quot;
#include &lt;list&gt;
#include &lt;iostream&gt;
using namespace std;

#define xG 10
#define yG 10

char Grid [10][10];
int Längen[6]={2,4,1,3,4,2};

class ship {

private:
	int länge;
	int xy[2];

public:
	ship (){}
	ship (int a[],int ausrichtung,int id);
	void zw (int a[],int ausrichtung,int id);
};

ship::ship(int a[],int ausrichtung,int id)
{   
	int posX= xy[1];
	int posY= xy[2];
	länge = a[id];
	if (ausrichtung == 90) 
	{
		Grid[posX][posY]='X';
		for (int i=0;i&lt;=länge;i++)
		{
			Grid[posX+=1][posY] = 'X';
		}
	}

		if (ausrichtung == 180) 
	{
		Grid[posX][posY]='X';
		for (int i=0;i&lt;=länge;i++)
		{
			Grid[posX][posY+=1] = 'X';
		}
	}

			if (ausrichtung == 270) 
	{
		Grid[posX][posY]='X';
		for (int i=0;i&lt;=länge;i++)
		{
			Grid[posX=-1][posY] = 'X';
		}
	}

				if (ausrichtung == 0) 
	{
		Grid[posX][posY]='X';
		for (int i=0;i&lt;=länge;i++)
		{
			Grid[posX][posY=-1] = 'X';
		}
	}

};

void schifflist (int anzahl)
{

	std::list&lt;ship*&gt; liste;

	for (int i=0;i&lt;=anzahl;i++)
	{
		liste.push_back(new ship(Längen,90,i));
//		liste.getAt(i).zw(Längen,90,i);

	}

}

void gridzeichnend () 
{
	for (int i=0;i&lt;=9;i++)
	{   

		for(int k=0;k&lt;=9;k++)
		{
			Grid[i][k] = '~';

		}
	}
}

void gridausgabe () 
{
	for (int i=0;i&lt;=9;i++)
	{   
		printf (&quot;\n&quot;);
		for(int k=0;k&lt;=9;k++)
		{
			printf(&quot;%c&quot;, Grid[i][k]);

		}
	}
  printf (&quot;\n&quot;);
}

int main (void) 
{

gridzeichnend ();
schifflist(6);
gridausgabe ();

}

//Vereinbarung
//1. Es werden immer die Koordinaten des Bugs angeben, anschließend die Gradzalh in die das Heck zeigt
</code></pre>
<p>Nun stüzt das Programm einfach ab,mein zweites Problem ist das ich noch nicht wirklich weiß, wie ich die Elemte aus der Liste herausbekommen kann um dann einzelenen Werte zu aktualisieren, d.h ich will z,b liste(i).längeSetzen(Wert)<br />
Danke fürs lesen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433858</guid><dc:creator><![CDATA[Brei]]></dc:creator><pubDate>Wed, 09 Jan 2008 18:14:37 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit list aus der STL. on Wed, 09 Jan 2008 23:02:06 GMT]]></title><description><![CDATA[<p>Hi Brei,</p>
<p>ich hab mir den Quelltext jetzt nicht sooo genau angekuckt, allerdings sind<br />
mir einige Sachen aufgefallen:</p>
<p>Zeile 32 und 33:<br />
Das Feld xy wurde zu keinem Zeitpunkt initialisiert.<br />
Was erwartest du da für Werte? Sicherlich keine Undefinierten ^^<br />
Außerdem hat ein Array der Größe 2 die Indizes 0 und 1</p>
<p>Deine Schiff-Objekte in ein statisches Feld zu schreiben ist auch nicht gerade sauber. (bzw. die statischen Längen)</p>
<p>Du weißt, dass deine Liste nur in der Methode schifflist verfügbar ist?<br />
und eine ship-Objekte auch nicht mehr freigegeben werden.</p>
<p>Es gibt verschiedene Möglichkeiten um auf die Objekte einer std::list<br />
zuzugreifen.</p>
<p>Ich schätze mal du willst alle Schiffe der Reihe nach haben.</p>
<pre><code class="language-cpp">for(std::list&lt;ship*&gt;::iterator it = liste.begin(); it!=liste.end(); ++it){
ship *schiff = (*it);
}
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">for(std::list&lt;ship*&gt;::const_iterator it = liste.begin(); it!=liste.end(); ++it){
const ship *schiff = (*it);
}
</code></pre>
<p>In Zeile 80 fügst du wohl auch ein Element mehr ein als du willst.<br />
Außerdem sind diese Schiffe identisch von den Koordinaten her.</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434022</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jan 2008 23:02:06 GMT</pubDate></item></channel></rss>