<?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[Templates Portierungsprobleme Linux zu Windows]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich portiere gerade ein Projekt von Linux nach Windows. Als Compiler und IDE nutze ich MSVC 2008 SP1. Nun habe ich eine Datei welche unter Linux (Ubuntu 8.04, ich glaube GCC 4.2) einwandfrei läuft, aber der MS Compiler mag sie nicht.</p>
<p>Er bemängelt das ein Templatebezeichner (T) in einer Nested Class nicht deklariert ist. Der Bezeichner stammt aus der äußeren Klasse.<br />
Anbei ist ein ausführbarer Auszug auf dem problematischen Code.</p>
<p>VariableChildTree.hpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;boost/weak_ptr.hpp&gt;
#include &lt;boost/shared_ptr.hpp&gt;

using boost::shared_ptr;
using boost::weak_ptr;

template&lt;class T&gt; class VariableChildTree;

template &lt;class T&gt;
class VariableChildTree
{
    public:
        template&lt;class S&gt; class VariableChildTreeIterator;
    private:
        template&lt;class S&gt; class VariableChildTreeNode;

    private:
        template &lt;class S&gt;
        class VariableChildTreeNode
        {
            friend class VariableChildTree;
            friend class VariableChildTreeIterator&lt;S&gt;;

            public:
				VariableChildTreeNode(shared_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; pParent);
            private:
                shared_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; m_pParent;
        }; // end class VariableChildTreeNode

    public:
        template &lt;class S&gt;
        class VariableChildTreeIterator
        {
            public:
                friend class VariableChildTree;
                VariableChildTreeIterator(weak_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; pWeakCurrNode, weak_ptr&lt;VariableChildTree&lt;T&gt; &gt;  pWeakTree)
				{
                	std::cout &lt;&lt; &quot;VariableChildTreeIterator::VariableChildTreeIterator&quot; &lt;&lt; std::endl;
					m_pCurrNode = pWeakCurrNode;
					m_pMyTree = pWeakTree;
				}
            private:
                weak_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt;  m_pCurrNode;
                weak_ptr&lt;VariableChildTree&lt;S&gt; &gt;      m_pMyTree;
        }; // end class VariableChildTreeIterator

    public:
        friend class VariableChildTreeIterator&lt;T&gt;;
        friend class VariableChildTreeNode&lt;T&gt;;

        static  shared_ptr&lt;VariableChildTree&lt;T&gt; &gt; create();

        VariableChildTreeIterator&lt;T&gt; getIterator()
		{
			return VariableChildTreeIterator&lt;T&gt;(m_pRootDummy, m_pWeakThis);
		}

    private:
        VariableChildTree();
        weak_ptr&lt;VariableChildTree&lt;T&gt; &gt;                 m_pWeakThis; // a weak pointer to &quot;this&quot; tree, neccessary for weak pointer from iterator to tree
        shared_ptr&lt;VariableChildTreeNode&lt;T&gt; &gt;           m_pRootDummy; // a dummy node for the root node
}; // end class VariableChildTree

template&lt;class T&gt; template&lt;class S&gt;
VariableChildTree&lt;T&gt;::VariableChildTreeNode&lt;S&gt;::VariableChildTreeNode(shared_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; pParent)
{
    m_pParent = pParent;
}
template&lt;class T&gt; VariableChildTree&lt;T&gt;::VariableChildTree()
{
    m_pRootDummy = shared_ptr&lt;VariableChildTreeNode&lt;T&gt; &gt;(new VariableChildTreeNode&lt;T&gt;());
}
template&lt;class T&gt; shared_ptr&lt;VariableChildTree&lt;T&gt; &gt; VariableChildTree&lt;T&gt;::create()
{
    shared_ptr&lt;VariableChildTree&lt;T&gt; &gt; pTree(new VariableChildTree&lt;T&gt;());
    pTree-&gt;m_pWeakThis = pTree;
    return pTree;
}
</code></pre>
<p>und main.cpp:</p>
<pre><code class="language-cpp">#include &quot;VariableChildTree.hpp&quot;
#include &lt;boost/shared_ptr.hpp&gt;

int main()
{
	shared_ptr&lt;VariableChildTree&lt;double&gt; &gt; vct = VariableChildTree&lt;double&gt;::create();
	vct-&gt;getIterator();
	return 0;
}
</code></pre>
<p>Der Fehler tritt beim aufruf des Konstruktors von VariableChildTreeIterator auf.</p>
<pre><code>1&gt;d:\...\variablechildtree.hpp(37) : error C2065: 'T': nichtdeklarierter Bezeichner
1&gt;        d:\...\variablechildtree.hpp(46): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;VariableChildTree&lt;T&gt;::VariableChildTreeIterator&lt;S&gt;&quot;.
1&gt;        d:\...\variablechildtree.hpp(63): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;VariableChildTree&lt;T&gt;&quot;.
1&gt;d:\...\variablechildtree.hpp(37) : error C2065: 'T': nichtdeklarierter Bezeichner
</code></pre>
<p>Hat vielleicht jemand eine Idee wie man diesen Code unter Windows zum laufen bringt.</p>
<p>Vielen Dank, sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248477/templates-portierungsprobleme-linux-zu-windows</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 22:00:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248477.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Aug 2009 13:11:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Tue, 25 Aug 2009 13:11:00 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich portiere gerade ein Projekt von Linux nach Windows. Als Compiler und IDE nutze ich MSVC 2008 SP1. Nun habe ich eine Datei welche unter Linux (Ubuntu 8.04, ich glaube GCC 4.2) einwandfrei läuft, aber der MS Compiler mag sie nicht.</p>
<p>Er bemängelt das ein Templatebezeichner (T) in einer Nested Class nicht deklariert ist. Der Bezeichner stammt aus der äußeren Klasse.<br />
Anbei ist ein ausführbarer Auszug auf dem problematischen Code.</p>
<p>VariableChildTree.hpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;boost/weak_ptr.hpp&gt;
#include &lt;boost/shared_ptr.hpp&gt;

using boost::shared_ptr;
using boost::weak_ptr;

template&lt;class T&gt; class VariableChildTree;

template &lt;class T&gt;
class VariableChildTree
{
    public:
        template&lt;class S&gt; class VariableChildTreeIterator;
    private:
        template&lt;class S&gt; class VariableChildTreeNode;

    private:
        template &lt;class S&gt;
        class VariableChildTreeNode
        {
            friend class VariableChildTree;
            friend class VariableChildTreeIterator&lt;S&gt;;

            public:
				VariableChildTreeNode(shared_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; pParent);
            private:
                shared_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; m_pParent;
        }; // end class VariableChildTreeNode

    public:
        template &lt;class S&gt;
        class VariableChildTreeIterator
        {
            public:
                friend class VariableChildTree;
                VariableChildTreeIterator(weak_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; pWeakCurrNode, weak_ptr&lt;VariableChildTree&lt;T&gt; &gt;  pWeakTree)
				{
                	std::cout &lt;&lt; &quot;VariableChildTreeIterator::VariableChildTreeIterator&quot; &lt;&lt; std::endl;
					m_pCurrNode = pWeakCurrNode;
					m_pMyTree = pWeakTree;
				}
            private:
                weak_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt;  m_pCurrNode;
                weak_ptr&lt;VariableChildTree&lt;S&gt; &gt;      m_pMyTree;
        }; // end class VariableChildTreeIterator

    public:
        friend class VariableChildTreeIterator&lt;T&gt;;
        friend class VariableChildTreeNode&lt;T&gt;;

        static  shared_ptr&lt;VariableChildTree&lt;T&gt; &gt; create();

        VariableChildTreeIterator&lt;T&gt; getIterator()
		{
			return VariableChildTreeIterator&lt;T&gt;(m_pRootDummy, m_pWeakThis);
		}

    private:
        VariableChildTree();
        weak_ptr&lt;VariableChildTree&lt;T&gt; &gt;                 m_pWeakThis; // a weak pointer to &quot;this&quot; tree, neccessary for weak pointer from iterator to tree
        shared_ptr&lt;VariableChildTreeNode&lt;T&gt; &gt;           m_pRootDummy; // a dummy node for the root node
}; // end class VariableChildTree

template&lt;class T&gt; template&lt;class S&gt;
VariableChildTree&lt;T&gt;::VariableChildTreeNode&lt;S&gt;::VariableChildTreeNode(shared_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; pParent)
{
    m_pParent = pParent;
}
template&lt;class T&gt; VariableChildTree&lt;T&gt;::VariableChildTree()
{
    m_pRootDummy = shared_ptr&lt;VariableChildTreeNode&lt;T&gt; &gt;(new VariableChildTreeNode&lt;T&gt;());
}
template&lt;class T&gt; shared_ptr&lt;VariableChildTree&lt;T&gt; &gt; VariableChildTree&lt;T&gt;::create()
{
    shared_ptr&lt;VariableChildTree&lt;T&gt; &gt; pTree(new VariableChildTree&lt;T&gt;());
    pTree-&gt;m_pWeakThis = pTree;
    return pTree;
}
</code></pre>
<p>und main.cpp:</p>
<pre><code class="language-cpp">#include &quot;VariableChildTree.hpp&quot;
#include &lt;boost/shared_ptr.hpp&gt;

int main()
{
	shared_ptr&lt;VariableChildTree&lt;double&gt; &gt; vct = VariableChildTree&lt;double&gt;::create();
	vct-&gt;getIterator();
	return 0;
}
</code></pre>
<p>Der Fehler tritt beim aufruf des Konstruktors von VariableChildTreeIterator auf.</p>
<pre><code>1&gt;d:\...\variablechildtree.hpp(37) : error C2065: 'T': nichtdeklarierter Bezeichner
1&gt;        d:\...\variablechildtree.hpp(46): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;VariableChildTree&lt;T&gt;::VariableChildTreeIterator&lt;S&gt;&quot;.
1&gt;        d:\...\variablechildtree.hpp(63): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;VariableChildTree&lt;T&gt;&quot;.
1&gt;d:\...\variablechildtree.hpp(37) : error C2065: 'T': nichtdeklarierter Bezeichner
</code></pre>
<p>Hat vielleicht jemand eine Idee wie man diesen Code unter Windows zum laufen bringt.</p>
<p>Vielen Dank, sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766438</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 25 Aug 2009 13:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Tue, 25 Aug 2009 13:38:16 GMT]]></title><description><![CDATA[<p>Gib den Template Parameter doch auch in der nested class an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766458</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 25 Aug 2009 13:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Tue, 25 Aug 2009 13:42:35 GMT]]></title><description><![CDATA[<p>Lass das &lt;T&gt; doch weg. Innerhalb des Klassentemplates VariableChildTree bezieht sich VariableChildTree immer auf die aktuelle Instantiierung, IIRC.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766461</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 25 Aug 2009 13:42:35 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Tue, 25 Aug 2009 13:58:27 GMT]]></title><description><![CDATA[<p>Danke für die Antworten.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a><br />
Du meinst in Zeile 37 einfach folgendes hinschreiben:</p>
<pre><code class="language-cpp">VariableChildTreeIterator(weak_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; pWeakCurrNode, weak_ptr&lt;VariableChildTree &gt;  pWeakTree)
</code></pre>
<p>Geht leider nicht. Compiler meckert das er ausgehend von Zeile 56 keinen passenden Konstuktor mehr findet.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a><br />
Hm, im Kurztest funktioniert das erstmal. Ich werde mal unter Linux testen ob das auch dort funktioniert. Dann müsste ich allerdings sehr viel Code überarbeiten. Naja, so ist das Leben, mal verliert man und mal gewinnen die anderen. <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>
<p>Für andere Vorschläge bin ich offen.</p>
<p>Grüße, sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766472</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 25 Aug 2009 13:58:27 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Tue, 25 Aug 2009 14:43:27 GMT]]></title><description><![CDATA[<p>Ich sehs jetzt gerade erst - sicher dass das im Ctor vom iterator ein VariableChildTree&lt;T&gt; sein muss und kein VariableChildTree&lt;S&gt;? Wenn ich richtig liege braucht der Iterator dann allerdings garkeinen Zugriff auf die Interna des VCTree und kann sogar außerhalb der Klasse definiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766497</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 25 Aug 2009 14:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Tue, 25 Aug 2009 14:56:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a><br />
Ja, das ist kein Schreibfehler. Der zweite Parameter ist bewusst von der Oberklasse abhängig. Also leider nichts mit auslagern.</p>
<p>Grüße, sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766505</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 25 Aug 2009 14:56:06 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Tue, 25 Aug 2009 15:07:45 GMT]]></title><description><![CDATA[<p>Bei Zeiten, werde ich mal im Standard nachschauen, welcher der beiden Compiler nicht standardkonform arbeitet. Aber wahrscheinlich wird das auf undefiniert hinauslaufen, obwohl ich eigentlich denke, dass das, was pumuckl meint doch auch gehen müsste..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766511</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 25 Aug 2009 15:07:45 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Tue, 25 Aug 2009 15:19:19 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Bei Zeiten, werde ich mal im Standard nachschauen, welcher der beiden Compiler nicht standardkonform arbeitet. Aber wahrscheinlich wird das auf undefiniert hinauslaufen, obwohl ich eigentlich denke, dass das, was pumuckl meint doch auch gehen müsste..</p>
</blockquote>
<p>Ggf. in der VCTree-Klasse T als value_type typedeffen bzw. VCTree&lt;T&gt; als tree_type typedeffen und den typedef in der Unterklasse nutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766519</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 25 Aug 2009 15:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Wed, 26 Aug 2009 07:37:41 GMT]]></title><description><![CDATA[<blockquote>
<p>Ggf. in der VCTree-Klasse T als value_type typedeffen bzw. VCTree&lt;T&gt; als tree_type typedeffen und den typedef in der Unterklasse nutzen.</p>
</blockquote>
<p>Unglaublich. Damit funktioniert es. Mal schauen ob das auch unter Linux läuft, aber diese Kleinigkeit kann man notfalls auch per ifdef erledigen.<br />
Vielen Dank nochmals. Der Tip erspart mir eine Menge Arbeit.</p>
<p>Grüße, sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766812</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Wed, 26 Aug 2009 07:37:41 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Wed, 26 Aug 2009 13:01:13 GMT]]></title><description><![CDATA[<p>Ich habe jetzt im Standard nachgeschaut und nichts gefunden, was dagegen spricht. Dann bin habe ich gedacht, dass ich es selbst mal ausprobiere und das kompiliert bei mir wunderbar.. Sofern ich das hier auskommentiere:</p>
<pre><code class="language-cpp">friend class VariableChildTreeIterator&lt;S&gt;;
</code></pre>
<p>Ich benutze Visual C++ 2008EE.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1766992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1766992</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 26 Aug 2009 13:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Wed, 26 Aug 2009 17:10:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;class T&gt;
class VariableChildTree
{
...
    private:
        template&lt;class S&gt; class VariableChildTreeNode;
...
public:
        template &lt;class S&gt;
        class VariableChildTreeIterator
        {
            public:
...
                VariableChildTreeIterator(weak_ptr&lt;VariableChildTreeNode&lt;S&gt; &gt; pWeakCurrNode, weak_ptr&lt;VariableChildTree&lt;T&gt; &gt;  pWeakTree)
...
        }; // end class VariableChildTreeIterator
...
        friend class VariableChildTreeIterator&lt;T&gt;;

}; // end class VariableChildTree
</code></pre>
<p>Die Definition von VariableChildTreeIterator greift auf den in VariableChildTree private deklarierten Bezeichner VariableChildTreeNode zu, aber nur die Spezialisierung VariableChildTreeIterator&lt;S&gt; mit S=T ist friend von VariableChildTree&lt;T&gt;. Das ist möglicherweise ein Fehler, vermutlich aber nicht der Grund, weshalb der Compiler ins Stolpern gerät.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1767174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1767174</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 26 Aug 2009 17:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Wed, 26 Aug 2009 17:38:13 GMT]]></title><description><![CDATA[<p>Bei der Definition dessen auf das man von der inneren Klasse aus zugreifen kann ist der 98er Standard so weit ich weiß schlampig. (Das heißt er definiert gar nichts.) Im C++0x Standard wird so weit ich das überschauen kann das GCC Verhalten vorgeschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1767199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1767199</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Wed, 26 Aug 2009 17:38:13 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Wed, 26 Aug 2009 18:06:26 GMT]]></title><description><![CDATA[<p>Ben04 schrieb:</p>
<blockquote>
<p>Bei der Definition dessen auf das man von der inneren Klasse aus zugreifen kann ist der 98er Standard so weit ich weiß schlampig. (Das heißt er definiert gar nichts.) Im C++0x Standard wird so weit ich das überschauen kann das GCC Verhalten vorgeschrieben.</p>
</blockquote>
<p>Er schreibt nichts spezielles vor. Sprich er besagt explizit, dass dieseleben Regeln, wie sonst gelten.</p>
<p>11.8 Nested classes schrieb:</p>
<blockquote>
<p>The members of a nested class have no special access to members of an enclosing class, nor to classes or<br />
functions that have granted friendship to an enclosing class; the usual access rules (clause 11) shall be<br />
obeyed. The members of an enclosing class have no special access to members of a nested class; the usual<br />
access rules (clause 11) shall be obeyed.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1767218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1767218</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 26 Aug 2009 18:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to Templates Portierungsprobleme Linux zu Windows on Wed, 26 Aug 2009 19:04:15 GMT]]></title><description><![CDATA[<p>Wie überall, heißt &quot;kein Zugriff auf private Sachen&quot;. Zu mindest kann man das so auslegen und so wurde das auch gemacht. Man kann eine innere Klasse aber so weit ich weiß nicht legal friend machen, womit es keine Möglichkeit gibt den Zugriff zu erlauben. T ist jetzt zwar kein Member aber von Außen kann man trotzdem nicht drauf zugreifen. Ein public typedef T type und dann die Verwendung von type sollte aber pedantisch korrekt sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1767254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1767254</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Wed, 26 Aug 2009 19:04:15 GMT</pubDate></item></channel></rss>