<?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[Lebensdauer von &amp;quot;typedef&amp;quot;]]></title><description><![CDATA[<p>Habe mehrere Klassen welche einen eingen typ verwenden:</p>
<pre><code class="language-cpp">typedef std::list&lt;AllocNode&gt;::iterator pos_type;
</code></pre>
<p>Wo muss ich diese Typdef deklarieen das es überall gilt?</p>
<p>Wenn ich es bspw in eine Header deklarier, ist das typedef dann nur da gütlig?</p>
<p>kann das sein das der compiler mekert wenn ich sowas mache:</p>
<pre><code class="language-cpp">pos_type Y;
std::list&lt;AllocNode&gt;::iterator X= Y; //&lt;-- cast fehler
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/186303/lebensdauer-von-quot-typedef-quot</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 07:51:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186303.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Jul 2007 07:27:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 07:27:39 GMT]]></title><description><![CDATA[<p>Habe mehrere Klassen welche einen eingen typ verwenden:</p>
<pre><code class="language-cpp">typedef std::list&lt;AllocNode&gt;::iterator pos_type;
</code></pre>
<p>Wo muss ich diese Typdef deklarieen das es überall gilt?</p>
<p>Wenn ich es bspw in eine Header deklarier, ist das typedef dann nur da gütlig?</p>
<p>kann das sein das der compiler mekert wenn ich sowas mache:</p>
<pre><code class="language-cpp">pos_type Y;
std::list&lt;AllocNode&gt;::iterator X= Y; //&lt;-- cast fehler
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1320067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320067</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Sat, 07 Jul 2007 07:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 07:32:28 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Wo muss ich diese Typdef deklarieen das es überall gilt?</p>
</blockquote>
<p>An einer Stelle, die überall dort sichtbar ist, wo der Typedef benutzt wird.</p>
<blockquote>
<p>Wenn ich es bspw in eine Header deklarier, ist das typedef dann nur da gütlig?</p>
</blockquote>
<p>Was meinst du mit &quot;nur da&quot;? Wenn der Typedef in einer Headerdatei steht, dann ist er in allen .cpp-Dateien verfügbar, die diesen Header direkt oder indirekt einbinden. Eine Headerdatei allein tut ja nichts.</p>
<blockquote>
<p>kann das sein das der compiler mekert wenn ich sowas mache:</p>
<pre><code class="language-cpp">pos_type Y;
std::list&lt;AllocNode&gt;::iterator X= Y; //&lt;-- cast fehler
</code></pre>
</blockquote>
<p>Ja, wenn pos_type an der Stelle nicht bekannt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320068</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sat, 07 Jul 2007 07:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 07:36:29 GMT]]></title><description><![CDATA[<p>bei typedef verhält es sich ganz genau so wie bei variablen.</p>
<pre><code class="language-cpp">pos_type Y;
std::list&lt;AllocNode&gt;::iterator X= Y;
</code></pre>
<p>der Comiler wird bei deinem Code nicht meckern da ein typedef kein eigener typ ist, sondern nur ein anderer name für ihn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320073</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 07 Jul 2007 07:36:29 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 07:59:04 GMT]]></title><description><![CDATA[<p>ok danke.. jungs...</p>
<p>Aber Problem:</p>
<pre><code class="language-cpp">//headerdatei

class AllocNode;

typedef std::list&lt;AllocNode&gt;::iterator type_pos;

class CVirtTreeList{

  //Verwendung von type_pos
   class AllocNode{
      //Verwendung von type_pos
....

    };
....
};
</code></pre>
<p>habe jetzt 15 mal &quot;std::list&lt;AllocNode&gt;::iterator &quot; mit &quot;type_pos&quot; ersetzt..</p>
<p>67 Errors:</p>
<pre><code>d:\test\StruktureGriuping\VirtTreeList.h(57): error C2027: Verwendung des undefinierten Typs &quot;AllocNode&quot;
d:\test\StruktureGriuping\VirtTreeList.h(57): error C2039: 'm_iLevel': Ist kein Element von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
        e:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\list(220): Siehe Deklaration von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
d:\test\StruktureGriuping\VirtTreeList.h(66): error C2678: Binärer Operator '!=': Es konnte kein Operator gefunden werden, der einen linksseitigen Operator vom Typ 'Node_Iter' akzeptiert (oder keine geeignete Konvertierung möglich)
d:\test\StruktureGriuping\VirtTreeList.h(68): error C2027: Verwendung des undefinierten Typs &quot;AllocNode&quot;
        d:\test\StruktureGriuping\VirtTreeList.h(13): Siehe Deklaration von 'AllocNode'
d:\test\StruktureGriuping\VirtTreeList.h(68): error C2039: 'm_iLevel': Ist kein Element von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
        e:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\list(220): Siehe Deklaration von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
d:\test\StruktureGriuping\VirtTreeList.h(86): warning C4804: '&gt;=': unsichere Verwendung des Typs 'bool' in einer Operation
d:\test\StruktureGriuping\VirtTreeList.h(95): error C2027: Verwendung des undefinierten Typs &quot;AllocNode&quot;
        d:\test\StruktureGriuping\VirtTreeList.h(13): Siehe Deklaration von 'AllocNode'
d:\test\StruktureGriuping\VirtTreeList.h(95): error C2039: 'm_iLevel': Ist kein Element von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
        e:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\list(220): Siehe Deklaration von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
d:\test\StruktureGriuping\VirtTreeList.h(96): warning C4018: '&gt;': Konflikt zwischen 'signed' und 'unsigned'
d:\test\StruktureGriuping\VirtTreeList.h(100): error C2664: 'std::list&lt;_Ty&gt;::iterator std::list&lt;_Ty&gt;::insert(std::list&lt;_Ty&gt;::iterator,const _Ty &amp;)': Konvertierung des Parameters 1 von 'Node_Iter' in 'std::list&lt;_Ty&gt;::iterator' nicht möglich
        with
        [
            _Ty=CVirtTreeList::AllocNode
        ]
        and
        [
            _Ty=CVirtTreeList::AllocNode
        ]
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
d:\test\StruktureGriuping\VirtTreeList.h(101): error C2027: Verwendung des undefinierten Typs &quot;AllocNode&quot;
        d:\test\StruktureGriuping\VirtTreeList.h(13): Siehe Deklaration von 'AllocNode'
d:\test\StruktureGriuping\VirtTreeList.h(101): error C2039: 'm_itThis': Ist kein Element von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
        e:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\list(220): Siehe Deklaration von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
d:\test\StruktureGriuping\VirtTreeList.h(105): error C2440: 'return': 'std::allocator&lt;_Ty&gt;::value_type' kann nicht in 'CVirtTreeList::AllocNode &amp;' konvertiert werden
        with
        [
            _Ty=AllocNode
        ]
        Ein Verweis, der nicht auf ein 'const' zeigt, kann nicht an einen Wert gebunden werden, bei dem es sich nicht um einen L-Wert handelt
d:\test\StruktureGriuping\VirtTreeList.h(116): error C2027: Verwendung des undefinierten Typs &quot;AllocNode&quot;
        d:\test\StruktureGriuping\VirtTreeList.h(13): Siehe Deklaration von 'AllocNode'
d:\test\StruktureGriuping\VirtTreeList.h(116): error C2039: 'm_strName': Ist kein Element von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
        e:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\list(220): Siehe Deklaration von 'std::list&lt;_Ty&gt;::iterator'
        with
        [
            _Ty=AllocNode
        ]
d:\test\StruktureGriuping\VirtTreeList.h(116): error C2228: Der linke Teil von '.c_str' muss eine Klasse/Struktur/Union sein
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1320082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320082</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Sat, 07 Jul 2007 07:59:04 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 08:03:11 GMT]]></title><description><![CDATA[<p>Zeig mal bitte auch eine Stelle, wo man die Benutzung sieht, ist besser als einen den Fehler lesen zu lassen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320087</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 07 Jul 2007 08:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 08:10:09 GMT]]></title><description><![CDATA[<p>bspw. in funktion ChildCount:</p>
<pre><code class="language-cpp">//headerdatei

class AllocNode;

typedef std::list&lt;AllocNode&gt;::iterator type_pos;

class CVirtTreeList{

  //Verwendung von type_pos
   class AllocNode{

	UINT ChildsCount(){

	  //Anzahl der Kindesknoten von oFather ermitteln
	  UINT iChildCount=0;
	  for(Node_Iter it= First_Node(); it != Last_Node(); it++) //&lt;-- HIER (Node_Iter)
	    if(it-&gt;m_iLevel == (this-&gt;m_iLevel+1))
	       iChildCount++;
	  return iChildCount;
	}
....

    };
....
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1320091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320091</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Sat, 07 Jul 2007 08:10:09 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 08:13:14 GMT]]></title><description><![CDATA[<p>Dein Typedef verwendet den Typ AllocNode, den es wahrscheinlich (außerhalb deiner Forward Declaration) gar nicht gibt. Der Typ, den du meinst, heißt CVirtTreeList::AllocNode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320096</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sat, 07 Jul 2007 08:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 08:15:12 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>ok danke.. jungs...</p>
<p>Aber Problem:</p>
<pre><code class="language-cpp">//headerdatei

class AllocNode;

typedef std::list&lt;AllocNode&gt;::iterator type_pos;

class CVirtTreeList{

  //Verwendung von type_pos
   class AllocNode{
      //Verwendung von type_pos
....

    };
....
};
</code></pre>
</blockquote>
<p>Du erzeugst eine vorwärtsdeklaration von AllocNode die sich ausserhalb der Klasse befindet, die definition erfolgt aber als nested class. Das äußere AllocNode wird also nie definiert und dadurch kommt der Fehler zustande.</p>
<p>Eine Lösung sähe so aus:</p>
<pre><code class="language-cpp">class CVirtTreeList{

  //Verwendung von type_pos
   class AllocNode{
      //Verwendung von type_pos
....

    };
....
    public:
        typedef std::list&lt;AllocNode&gt;::iterator type_pos;

};
typedef CVirtTreeList::type_pos type_pos;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1320097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320097</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 07 Jul 2007 08:15:12 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 08:32:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class CVirtTreeList{

  //Verwendung von type_pos
   class AllocNode{
type_pos A;
type_pos B;
....
....
      //Verwendung von type_pos
....

    };
....
    public:
        typedef std::list&lt;AllocNode&gt;::iterator type_pos;

};
typedef CVirtTreeList::type_pos type_pos;
</code></pre>
<p>danke aber es komm immer noch 34 fehler , wahrscheinlich weil AllocNode noch mebes hat (A,B) vom typ type_pos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320109</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Sat, 07 Jul 2007 08:32:58 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer von &amp;quot;typedef&amp;quot; on Sat, 07 Jul 2007 08:55:52 GMT]]></title><description><![CDATA[<p>durch den typedef initialisierst du das Klassentemplate std::list&lt;AllocNode&gt; und damit auch die komplette Definition des Templates. Vermutlich werden in dem Template einige Methoden (z.B. Copy-CTOR und assignment operator etc.) benutzt, die aber zu der Zeit nicht bekannt sind, so dass der Compiler, der an dieser Stelle implizit die Klassendefinition von std:list&lt;AllocNode&gt; einfügt, meckert, weil er Methoden sieht, für die er (noch) keine Deklaration hat (weil eben die Definition von AllocNode noch nicht bekannt ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320118</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 07 Jul 2007 08:55:52 GMT</pubDate></item></channel></rss>