<?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[Verschiedene Objekte in einem Array]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Weltkarte deren Punkte in einem Array repräsentiert sind.</p>
<p>In jedem der Punkte könnte ein bestimmtes Objekt mit spezifischen Eigenschaften stehen. Diese Objekte haben einen gemeinsamen Parent.</p>
<p>Ich frage mich jetzt wie ich in c++ die Objekte irgendwie in dieses Array speichern kann um dann auf sie zurück zu greifen.<br />
Problem ist, dass ja jedes Objekt eine andere Klasse haben kann.</p>
<p>Hier mal etwas pseudocode:</p>
<pre><code>class World() {
public:
 ? getObjectAtPoint(int x, int y) {return this-&gt;array[x][y];}
 setObjectAtPoint(object, int x, int y) {this-&gt;array[x][y] = object;}
 ? array[500][500];
}

class Object {
protected:
 int allgmEigenschaft;
}

class Baum : Object {
private:
 int spezEigenschaft1;
}

class Stein : Object {
private:
 int spezEigenschaft2;
}

int main() {
 World world = new World();
 world-&gt;setObjectAtPoint(Baum, 1, 1);
 world-&gt;setObjectAtPoint(Stein, 2, 4);

 int foo = world-&gt;getObjectAtPoint(1,1).allgEigenschaft();
 int bar = world-&gt;getObjectAtPoint(1,1).spezgEigenschaft();
}
</code></pre>
<p>Wie kann man dies am besten machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288055/verschiedene-objekte-in-einem-array</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 18:19:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288055.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 09 Jun 2011 15:00:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verschiedene Objekte in einem Array on Thu, 09 Jun 2011 15:00:20 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Weltkarte deren Punkte in einem Array repräsentiert sind.</p>
<p>In jedem der Punkte könnte ein bestimmtes Objekt mit spezifischen Eigenschaften stehen. Diese Objekte haben einen gemeinsamen Parent.</p>
<p>Ich frage mich jetzt wie ich in c++ die Objekte irgendwie in dieses Array speichern kann um dann auf sie zurück zu greifen.<br />
Problem ist, dass ja jedes Objekt eine andere Klasse haben kann.</p>
<p>Hier mal etwas pseudocode:</p>
<pre><code>class World() {
public:
 ? getObjectAtPoint(int x, int y) {return this-&gt;array[x][y];}
 setObjectAtPoint(object, int x, int y) {this-&gt;array[x][y] = object;}
 ? array[500][500];
}

class Object {
protected:
 int allgmEigenschaft;
}

class Baum : Object {
private:
 int spezEigenschaft1;
}

class Stein : Object {
private:
 int spezEigenschaft2;
}

int main() {
 World world = new World();
 world-&gt;setObjectAtPoint(Baum, 1, 1);
 world-&gt;setObjectAtPoint(Stein, 2, 4);

 int foo = world-&gt;getObjectAtPoint(1,1).allgEigenschaft();
 int bar = world-&gt;getObjectAtPoint(1,1).spezgEigenschaft();
}
</code></pre>
<p>Wie kann man dies am besten machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075801</guid><dc:creator><![CDATA[Testuser]]></dc:creator><pubDate>Thu, 09 Jun 2011 15:00:20 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Objekte in einem Array on Thu, 09 Jun 2011 15:05:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class World() { 
public: 
 Object* getObjectAtPoint(int x, int y) {return this-&gt;array[x][y];} 
 setObjectAtPoint(object, int x, int y) {this-&gt;array[x][y] = object;} 
 Object* array[500][500]; 
}
</code></pre>
<p>Das wäre prinzipiell der Weg, wie man das macht (man benutzt da aber eher einen anderen Container und kein Array). Dann brauchst du aber eine allgemeine Schnittstelle für die Basisklasse, damit du die Objekte auch benutzen kannst. Wenn du die Objekte da so reinpackst müssen die ja gewisse Gemeinsamkeiten haben und das kannst du so darstellen.<br />
Der private Bereich einer Klasse stellt ja die Implementierung dar. Sie legt fest, wie sich das Objekt verhält, aber die Schnittstelle solltest du allgemein machen.<br />
Object hat dann z.B einen Funktion destroy, welche von den Kindern implementiert wird. Dann kannst du die Funktion aufrufen und je nach Objekt verhält es sich anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075810</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 09 Jun 2011 15:05:49 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Objekte in einem Array on Mon, 13 Jun 2011 13:18:39 GMT]]></title><description><![CDATA[<p>Ja genauso hab ich es auch gemacht, bekomme aber momentan einen Fehler.<br />
Vorher hatte ich es irgendwie anders hinbekommen, aber dann war nach der 3. Zeile in der &quot;main.cpp&quot; an Punkt 1,1 nicht ein Objekt vom Typ &quot;ObjectTree&quot; sondern nur ein &quot;Object&quot; (der Holzertrag fehlte).</p>
<p>main.cpp:</p>
<pre><code>ObjectTree* objectTree = new ObjectTree(false,5);
	ObjectsContainer* objectsContainer = new ObjectsContainer();
	objectsContainer-&gt;setObjectAtPoint(objectTree,1,1);           //FEHLER: ObjectTree*  mit Object* inkompatibel
	Object* object = objectsContainer-&gt;getObjectAtPoint(1,1);
</code></pre>
<p>ObjectTree.h</p>
<pre><code>#include &quot;Object.h&quot;

class ObjectTree : public Object {
public:
	ObjectTree(int walkable,int holzertrag) {this-&gt;walkable = walkable; this-&gt;holzertrag = holzertrag;}
	int getHolzertrag() {return this-&gt;holzertrag;}
private:
	int holzertrag;
};
</code></pre>
<p>Object.h</p>
<pre><code>class Object {
public:
	Object();
	~Object();

	Object(bool walkable) {this-&gt;walkable = walkable;}
	bool isWalkable() {return this-&gt;walkable;}
	void setWalkable(bool walkable) {this-&gt;walkable = walkable;}

protected:
	bool walkable;
};
</code></pre>
<p>Object.cpp</p>
<pre><code>#include &quot;Object.h&quot;

Object::Object() {
	this-&gt;walkable = true;
}
</code></pre>
<p>ObjectsContainer.h</p>
<pre><code>#include &quot;Object.h&quot;

class ObjectsContainer {
public:
	ObjectsContainer();
	Object* getObjectAtPoint(int x, int z);
	void setObjectAtPoint(Object* object, int x, int z);
private:
	Object* objects[513][513];
};
</code></pre>
<p>ObjectsContainer.cpp</p>
<pre><code>#include &quot;ObjectsContainer.h&quot;

ObjectsContainer::ObjectsContainer() {
	for(int i = 0; i &lt; 513; i++) {
		for(int j = 0; j &lt; 513; j++) {
			this-&gt;objects[i][j] = 0;
		}
	}
}

Object* ObjectsContainer::getObjectAtPoint(int x, int z) {
	return this-&gt;objects[x][z];
}

void ObjectsContainer::setObjectAtPoint(Object* object, int x, int z) {
	this-&gt;objects[x][z] = object;
}
</code></pre>
<p>Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077453</guid><dc:creator><![CDATA[Testuser]]></dc:creator><pubDate>Mon, 13 Jun 2011 13:18:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Objekte in einem Array on Thu, 23 Jun 2011 18:38:51 GMT]]></title><description><![CDATA[<p>Würde mich nach wie vor über jegliche Hilfe freuen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2082805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2082805</guid><dc:creator><![CDATA[testuser]]></dc:creator><pubDate>Thu, 23 Jun 2011 18:38:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Objekte in einem Array on Thu, 23 Jun 2011 19:45:07 GMT]]></title><description><![CDATA[<p>Was ist denn jetzt das Problem? Ein Compilerfehler?</p>
<p>Den Destruktor von Object solltest du auf jeden Fall virtual machen, dann &quot;weiß&quot; der Compiler auch später noch, dass es sich beim object um einen ObjectTree handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2082865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2082865</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 23 Jun 2011 19:45:07 GMT</pubDate></item></channel></rss>