<?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[Kleine Frage]]></title><description><![CDATA[<p>1. Warum funktioniert der Code hier nicht:<br />
2. Wie kann ich bei auf das secondElement der dTile zugreifen?<br />
m.map_[1] --&gt; is ja dTile</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Tile
{
public:
	int firstID_;

public:
	virtual void print(void);

};

class udTile : public Tile
{
public:
	void print(void)
	{
		std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;
	}

};

class dTile : public Tile
{
public:
	int secondID_;

public:
	void print(void)
	{
		std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;
	}
};

class Map
{
public:
	Tile** map_;
};

int main(void)
{

	Map m;

	m.map_ = new Tile*[10];

	m.map_[0] = new dTile;
	m.map_[1] = new udTile;

	m.map_[0].print();
	m.map_[1].print();

	// delte!!!!

	std::wcin.get();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/162611/kleine-frage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 15:51:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162611.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Oct 2006 11:53:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 11:53:28 GMT]]></title><description><![CDATA[<p>1. Warum funktioniert der Code hier nicht:<br />
2. Wie kann ich bei auf das secondElement der dTile zugreifen?<br />
m.map_[1] --&gt; is ja dTile</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Tile
{
public:
	int firstID_;

public:
	virtual void print(void);

};

class udTile : public Tile
{
public:
	void print(void)
	{
		std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;
	}

};

class dTile : public Tile
{
public:
	int secondID_;

public:
	void print(void)
	{
		std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;
	}
};

class Map
{
public:
	Tile** map_;
};

int main(void)
{

	Map m;

	m.map_ = new Tile*[10];

	m.map_[0] = new dTile;
	m.map_[1] = new udTile;

	m.map_[0].print();
	m.map_[1].print();

	// delte!!!!

	std::wcin.get();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1158293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158293</guid><dc:creator><![CDATA[BigF]]></dc:creator><pubDate>Fri, 20 Oct 2006 11:53:28 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 11:54:14 GMT]]></title><description><![CDATA[<p>Schoneinmal vielen Dank für eure Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158294</guid><dc:creator><![CDATA[BigF]]></dc:creator><pubDate>Fri, 20 Oct 2006 11:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 11:56:59 GMT]]></title><description><![CDATA[<p>Ncoheinmal eine kleine Berichtigung:</p>
<p>1. Warum funktioniert der Code hier nicht:<br />
2. Wie kann ich bei auf das secondElement der dTile zugreifen?<br />
m.map_[0] --&gt; is ja dTile</p>
<p>Fehlermeldung:</p>
<pre><code>1&gt;main.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: virtual void __thiscall Tile::print(void)&quot; (?print@Tile@@UAEXXZ)&quot;.
</code></pre>
<p>--&gt; Soweit ich weiß, muss man den ganzen Spaß dann casten?</p>
<p>#include &lt;iostream&gt;</p>
<p>class Tile<br />
{<br />
public:<br />
int firstID_;</p>
<p>public:<br />
virtual void print(void);</p>
<p>};</p>
<p>class udTile : public Tile<br />
{<br />
public:<br />
void print(void)<br />
{<br />
std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;<br />
}</p>
<p>};</p>
<p>class dTile : public Tile<br />
{<br />
public:<br />
int secondID_;</p>
<p>public:<br />
void print(void)<br />
{<br />
std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;<br />
}<br />
};</p>
<p>class Map<br />
{<br />
public:<br />
Tile** map_;<br />
};</p>
<p>int main(void)<br />
{</p>
<p>Map m;</p>
<p>m.map_ = new Tile*[10];</p>
<p>m.map_[0] = new dTile;<br />
m.map_[1] = new udTile;</p>
<p>m.map_[0]-&gt;print();<br />
m.map_[1]-&gt;print();</p>
<p>// delte!!!!</p>
<p>std::wcin.get();<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158298</guid><dc:creator><![CDATA[BigF]]></dc:creator><pubDate>Fri, 20 Oct 2006 11:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:00:31 GMT]]></title><description><![CDATA[<p>1.) Was genau geht nicht? Kompilerfehler? Wird nichts ausgegeben?<br />
2.) Warum haben deine Membervariabeln alle underscores(&quot;_&quot;) am Ende des Bezeichners?</p>
<p>grz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158299</guid><dc:creator><![CDATA[das_brot]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:00:31 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:06:44 GMT]]></title><description><![CDATA[<p>Du must Tile::print noch deklarieren:</p>
<pre><code class="language-cpp">class Tile
{
public:
int firstID_;

public:
virtual void print(void)
//here comes da boom
{}
//feddisch ;)

};
</code></pre>
<p>/EDIT: ok so war das gemeint -&gt;erledigt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158303</guid><dc:creator><![CDATA[das_brot]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:02:59 GMT]]></title><description><![CDATA[<p>Ich habe jetzt den Kompilkierfehlerbehoben, habe aber noch folgende Probleme:</p>
<pre><code class="language-cpp">1. Die Ausgabe sagt mir 2x destroyable (obwohl sie einmal undestroyable sagen sollte)

2. Wie kann ich m.map_ auf secondID_ zugreifen?

#include &lt;iostream&gt;

class Tile
{
public:
	int firstID_;

public:
	virtual void print(void) = 0;

};

class udTile : public Tile
{
public:
	void print(void)
	{
		std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;
	}

};

class dTile : public Tile
{
public:
	int secondID_;

public:
	void print(void)
	{
		std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;
	}
};

class Map
{
public:
	Tile** map_;
};

int main(void)
{

	Map m;

	m.map_ = new Tile*[10];

	m.map_[0] = new dTile;
	m.map_[1] = new udTile;

	m.map_[0]-&gt;print();
	m.map_[1]-&gt;print();

	// delte!!!!

	std::wcin.get();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1158305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158305</guid><dc:creator><![CDATA[BigF]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:02:59 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:04:46 GMT]]></title><description><![CDATA[<p>BigF schrieb:</p>
<blockquote>
<p>1. Warum funktioniert der Code hier nicht:</p>
</blockquote>
<p>Entweder du machst die print()-Methode in der Basisklasse abstrakt (&quot;virtual void print()[u]=0;&quot;) oder du spendierst ihr einen Funktionsrumpf - über alles andere wird sich der Linker beschweren.</p>
<blockquote>
<p>2. Wie kann ich bei auf das secondElement der dTile zugreifen?<br />
m.map_[0] --&gt; is ja dTile</p>
</blockquote>
<p>Wie du richtig erkannst hast, mußt du das casten:</p>
<pre><code class="language-cpp">if(dynamic_cast&lt;dTile*&gt;(n.map_[0]))
  wcout&lt;&lt;dynamic_cast&lt;dTile*&gt;(n.map_[0])-&gt;secondID_;
</code></pre>
<p>(wenn du dir sicher bist, kannst du die if()-Abfrage auch weglassen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158306</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:04:46 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:07:24 GMT]]></title><description><![CDATA[<p>Nun stellt sich aber für mich die Frage, warum der mir</p>
<p>destroyable<br />
destroyable</p>
<p>ausgibt</p>
<p>normalerweise sollte er mir ja:</p>
<p>destroyable<br />
undestroyable</p>
<p>ausgeben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158310</guid><dc:creator><![CDATA[BigF]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:07:24 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:08:24 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(dynamic_cast&lt;dTile*&gt;(n.map_[0]))
  wcout&lt;&lt;dynamic_cast&lt;dTile*&gt;(n.map_[0])-&gt;secondID_;
</code></pre>
<p>(wenn du dir sicher bist, kannst du die if()-Abfrage auch weglassen)</p>
</blockquote>
<p>...und meines wissens gleich das schnellere static_cast verwenden (aber sei dir sicher mein junger Padawan!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158313</guid><dc:creator><![CDATA[das_brot]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:09:00 GMT]]></title><description><![CDATA[<p>Sry, fehler von der Firma....</p>
<p>Ich aheb mich im String veraschrieben, aber Danke für die schnelle Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158314</guid><dc:creator><![CDATA[BigF]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:09:00 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:09:30 GMT]]></title><description><![CDATA[<p>BigF schrieb:</p>
<blockquote>
<p>Nun stellt sich aber für mich die Frage, warum der mir</p>
<p>destroyable<br />
destroyable</p>
<p>ausgibt</p>
<p>normalerweise sollte er mir ja:</p>
<p>destroyable<br />
undestroyable</p>
<p>ausgeben</p>
</blockquote>
<p>1. denken<br />
2. posten</p>
<p>-&gt;beide klassen, die du abgeleitet hast, geben destroyable aus. so einfach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158315</guid><dc:creator><![CDATA[das_brot]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:09:30 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:10:58 GMT]]></title><description><![CDATA[<p>Aber mal noch eine andere Frage: wie sollte ich das alles richtig delten?<br />
muss man dafür verschachtelte Schleifen verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158319</guid><dc:creator><![CDATA[BigF]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:10:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:14:57 GMT]]></title><description><![CDATA[<p>doppelpost</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158323</guid><dc:creator><![CDATA[das_brot]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:14:57 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:14:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

class Tile
{
public:
    int firstID_;

public:
    virtual void print(void);

};

class udTile : public Tile
{
public:
    void print(void)
    {
        std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;
    }

};

class dTile : public Tile
{
public:
    int secondID_;

public:
    void print(void)
    {
        std::wcout &lt;&lt; L&quot;destroyable tile\n&quot;;
    }
};

class Map
{
public:
    Tile** map_;
};

int main(void)
{

    Map m;

    m.map_ = new Tile*[10];

    //alle zeiger für spätere überprüfung auf 0 setzen
    for(i=0; i&lt;10; i++)
    {
        m.map_[i] = 0;
    }

    m.map_[0] = new dTile;
    m.map_[1] = new udTile;

    m.map_[0].print();
    m.map_[1].print();

    // delte!!!!
    for(i=0; i&lt;10; i++)
    {
        if(m.map_[i]) //wurde was initialisiert?
            delete m.map_[i];
    }

    std::wcin.get();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1158325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158325</guid><dc:creator><![CDATA[das_brot]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:14:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Frage on Fri, 20 Oct 2006 12:17:27 GMT]]></title><description><![CDATA[<p>BigF schrieb:</p>
<blockquote>
<p>Aber mal noch eine andere Frage: wie sollte ich das alles richtig delten?</p>
</blockquote>
<p>Kurz: Alles, was du mit new angelegt hast, solltest du mit delete wieder freigeben:</p>
<pre><code class="language-cpp">delete n.map_[1];
delete n.map_[0];
delete[] n.map_;
</code></pre>
<p>(aber noch besser solltest du der Klasse Map einen Destruktor mitgeben, der sie aufräumt (und einen Elementzähler, damit sie weiß, wieviele Elemente sie beseitigen muß)).</p>
<p>PS: Und noch besser ist es, du nimmst statt Eigenentwicklungen einen std::vector&lt;&gt; (in der Boost-Bibliothek gibt es afaik auch Pointer-Vektoren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158328</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Oct 2006 12:17:27 GMT</pubDate></item></channel></rss>