<?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[Vorwärtsdeklartion (mit typedef)?]]></title><description><![CDATA[<pre><code class="language-cpp">a.h
...
#include&lt;a.B&gt;

class A;
typedef boost::shared_ptr&lt;A&gt; APtr;

class A
{
public:
  BPtr get();
...

b.h
#include&lt;a.h&gt;
...
class B;
typedef boost::shared_ptr&lt;B&gt; BPtr;

class B : public A
{
...
</code></pre>
<p>Die gegenseitgen Anhängigkeiten führen zu logischerweis hier zu Übersetzungsfehlern. In der Regel läßt es sich vermeiden indem man den typedef vor einen bestimmten include durchführt.</p>
<p>Das Problem erscheint derzeit beim Umstellen von Raw-Pointern, bei der die Vorwärtsdeklaration der Klasse ausreichend ist, auf shared-Pointer.</p>
<p>Kann man das Problem irgendwie anders lösen?<br />
Da ich in den Klassen bereits mit den typedefs arbeite soll der typedef auch vor der Klassendeklaration durchgeführt werden.</p>
<p>Gruß,<br />
SirAnn</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/250801/vorwärtsdeklartion-mit-typedef</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 21:47:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/250801.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Sep 2009 11:31:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vorwärtsdeklartion (mit typedef)? on Thu, 24 Sep 2009 11:31:19 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">a.h
...
#include&lt;a.B&gt;

class A;
typedef boost::shared_ptr&lt;A&gt; APtr;

class A
{
public:
  BPtr get();
...

b.h
#include&lt;a.h&gt;
...
class B;
typedef boost::shared_ptr&lt;B&gt; BPtr;

class B : public A
{
...
</code></pre>
<p>Die gegenseitgen Anhängigkeiten führen zu logischerweis hier zu Übersetzungsfehlern. In der Regel läßt es sich vermeiden indem man den typedef vor einen bestimmten include durchführt.</p>
<p>Das Problem erscheint derzeit beim Umstellen von Raw-Pointern, bei der die Vorwärtsdeklaration der Klasse ausreichend ist, auf shared-Pointer.</p>
<p>Kann man das Problem irgendwie anders lösen?<br />
Da ich in den Klassen bereits mit den typedefs arbeite soll der typedef auch vor der Klassendeklaration durchgeführt werden.</p>
<p>Gruß,<br />
SirAnn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783525</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 24 Sep 2009 11:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklartion (mit typedef)? on Thu, 24 Sep 2009 11:50:29 GMT]]></title><description><![CDATA[<p><a href="http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/smart_ptr.htm" rel="nofollow">boost::shared_ptr&lt;X&gt; benötigt keinen vollständigen Typen bei der Instantiierung.</a> Die Verwendung anstelle von rohen Zeigern sollte also problemlos möglich sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783532</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Sep 2009 11:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklartion (mit typedef)? on Thu, 24 Sep 2009 11:54:16 GMT]]></title><description><![CDATA[<p>Hi camper<br />
das ist korrekt (sonst würde meien vorwärtsdeklaration im Bsp auch nicht funktionieren).</p>
<p>mein Problem ist eher das, dass ich in ausschließlich mit den typedefs arbeiten möchte und diese auch in der jeweiligen Klassendeklaration unterbringen möchte.</p>
<p>und eine Vorwärtsdeklaration a la</p>
<pre><code class="language-cpp">class APtr;
</code></pre>
<p>resultiert in einem &quot;alredy defines APtr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783533</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 24 Sep 2009 11:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklartion (mit typedef)? on Thu, 24 Sep 2009 12:08:37 GMT]]></title><description><![CDATA[<p>Ich bin nicht sicher, ob ich das Problem richtig verstanden habe - aber evtl. könntest du a.h und b.h aufteilen, indem du den rein deklaratorischen Teil ausgliederst, ungefähr so:</p>
<pre><code class="language-cpp">a_fwd.h

class A;
typedef boost::shared_ptr&lt;A&gt; APtr;

a.h
#include &quot;a_fwd.h&quot;
#include &quot;b_fwd.h&quot;
class A
{
public:
  BPtr get();
...

b_fwd.h
class B;
typedef boost::shared_ptr&lt;B&gt; BPtr;

b.h
#include &quot;b_fwd.h&quot;
#include &quot;a.h&quot;
class B : public A
{
...
</code></pre>
<p>ungefähr so, wie es &lt;ios&gt; und &lt;ios_fwd&gt; gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783541</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Sep 2009 12:08:37 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklartion (mit typedef)? on Thu, 24 Sep 2009 12:11:26 GMT]]></title><description><![CDATA[<p>ah, verstehe. okay! so kann ich es natürlich lösen.</p>
<p>danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783543</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 24 Sep 2009 12:11:26 GMT</pubDate></item></channel></rss>