<?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[typedef von typen innerhalb eine templateklasse]]></title><description><![CDATA[<p>also bei dr. dobb´s hab ich das hier gefunden</p>
<pre><code class="language-cpp">void f( int ); // function
template&lt;typename T&gt; void f( T );
               // function template, usage f&lt;int&gt;

class X { };   // class
template&lt;typename T&gt; class X { };
               // class template, usage X&lt;int&gt;

typedef map&lt;string, Employee&gt; EmployeeRegistry; 
               // typedef
template&lt;typename T&gt; typedef map&lt;string, T&gt; Registry;
               // typedef template, 
               // usage Registry&lt;Employee&gt;
</code></pre>
<p>und ich dachte mir hey dann könnt doch auch dieses jene gehen</p>
<pre><code class="language-cpp">template&lt; typename V, typename D, typename O &gt; 
typedef RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type RssdXmlProcessTreeRef ;
</code></pre>
<p>dann beglückte mich vs 2005 mit folgender meldung</p>
<blockquote>
<p>Will automatically link with mlog_sd.1.4.0.vc8.lib<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C2823: a typedef template is illegal<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : warning C4346: 'rssd::RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type' : dependent name is not a type<br />
prefix with 'typename' to indicate a type<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C2146: syntax error : missing ';' before identifier 'RssdXmlProcessTreeRef'<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C2888: 'RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type Ref_Type' : symbol cannot be defined within namespace 'rssd'<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : fatal error C1903: unable to recover from previous error(s); stopping compilation</p>
</blockquote>
<p>dann dachte hey versuchts es mal so:</p>
<pre><code class="language-cpp">template&lt; typename V, typename D, typename O &gt; 
typename typedef RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type RssdXmlProcessTreeRef ;
</code></pre>
<p>dann wurde vs noch viel mitteilsamer</p>
<blockquote>
<p>c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C2998: 'RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type rssd::RssdXmlProcessTreeRef' : cannot be a template definition<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(48) : error C2989: 'mlib::MString' : class template has already been declared as a non-class template<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mlib\mstring.h(59) : see declaration of 'mlib::MString'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(56) : error C2989: 'mlib::MXmlData' : class template has already been declared as a non-class template<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmldata.h(79) : see declaration of 'mlib::MXmlData'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : error C2989: 'mlib::MXmlTypeWrapper' : class template has already been declared as a non-class template<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlparameter.h(56) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(21) : error C2039: 'GetCardinality' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(22) : error C2270: 'GetCardinality' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(30) : error C2039: 'GetSize' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(31) : error C2270: 'GetSize' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(38) : error C2039: 'Resize' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(39) : error C2270: 'Resize' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(46) : error C2039: 'GetSubstructure' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(47) : error C2270: 'GetSubstructure' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(55) : error C2039: 'IsXmlSubDocString' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(56) : error C2270: 'IsXmlSubDocString' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(64) : error C2039: 'IsComplexElement' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(65) : error C2270: 'IsComplexElement' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(73) : error C2039: 'IsEqual' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(76) : error C2270: 'IsEqual' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(77) : error C2673: 'IsEqual' : global functions do not have 'this' pointers<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(77) : error C2027: use of undefined type 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlbasetypewrapper.h(82) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlbasetypewrapper.h(236) : see reference to class template instantiation 'mlib::MXmlBaseTypeWrapper&lt;T&gt;' being compiled<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlbasetypewrapper.h(82) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlenumwrapper.h(81) : see reference to class template instantiation 'mlib::MXmlBaseTypeWrapper&lt;T&gt;' being compiled<br />
with<br />
[<br />
T=int<br />
]<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlenumwrapper.impl.h(54) : error C2440: 'return' : cannot convert from 'mlib::MXmlEnumWrapper *' to 'mlib::MXmlTypeWrapper *'<br />
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlbasetypewrapper.h(82) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlboolwrapper.h(80) : see reference to class template instantiation 'mlib::MXmlBaseTypeWrapper&lt;T&gt;' being compiled<br />
with<br />
[<br />
T=bool<br />
]<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlboolwrapper.impl.h(61) : error C2065: 'mDescription' : undeclared identifier<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlboolwrapper.impl.h(70) : error C2440: 'return' : cannot convert from 'mlib::MXmlBoolWrapper *' to 'mlib::MXmlTypeWrapper *'<br />
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlvectorwrapper.h(72) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlvectorwrapper.h(280) : see reference to class template instantiation 'mlib::MXmlVectorWrapper&lt;T&gt;' being compiled<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlelementwrapper.h(70) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlelementwrapper.h(260) : see reference to class template instantiation 'mlib::MXmlElementWrapper&lt;T&gt;' being compiled<br />
Will automatically link with rssdcommon_sd.1.4.0.vc8.lib<br />
Will automatically link with mdata_sd.1.4.0.vc8.lib</p>
</blockquote>
<p>ok ich hab für meinen fall das problem anderweitig gelöst und über einen basistypen von dem die templateklasse erbt dann entsprechend nötige definitionen gemacht.</p>
<p>Aber warum gehts eigentlich nicht? nur so grundsätzlich. Liegt es daran dass ich auf einen internen typen einer noch nicht parametrisierten termplateklasse zugreifen möchte? oder hab ich einfach nenn fehler gemacht oder ist das vs 2005 einfach zu doof dazu?</p>
<p>achja hier der anfang vom header</p>
<pre><code class="language-cpp">template&lt; typename V, typename D, typename O = mlib::MObserverRef &gt;
class RSSDSERVER_DLL_API RssdXmlProcessTree 
  : public mlib::MXmlData,
    public mlib::MRefInterface&lt; RssdXmlProcessTree&lt; V, D, O &gt; &gt;
{
  public:
</code></pre>
<p>Dieser ::Ref_Type wird übrigens vom MRefInterface interface intern definiert <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/topic/185166/typedef-von-typen-innerhalb-eine-templateklasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 03:20:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185166.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Jun 2007 12:17:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to typedef von typen innerhalb eine templateklasse on Fri, 22 Jun 2007 12:17:55 GMT]]></title><description><![CDATA[<p>also bei dr. dobb´s hab ich das hier gefunden</p>
<pre><code class="language-cpp">void f( int ); // function
template&lt;typename T&gt; void f( T );
               // function template, usage f&lt;int&gt;

class X { };   // class
template&lt;typename T&gt; class X { };
               // class template, usage X&lt;int&gt;

typedef map&lt;string, Employee&gt; EmployeeRegistry; 
               // typedef
template&lt;typename T&gt; typedef map&lt;string, T&gt; Registry;
               // typedef template, 
               // usage Registry&lt;Employee&gt;
</code></pre>
<p>und ich dachte mir hey dann könnt doch auch dieses jene gehen</p>
<pre><code class="language-cpp">template&lt; typename V, typename D, typename O &gt; 
typedef RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type RssdXmlProcessTreeRef ;
</code></pre>
<p>dann beglückte mich vs 2005 mit folgender meldung</p>
<blockquote>
<p>Will automatically link with mlog_sd.1.4.0.vc8.lib<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C2823: a typedef template is illegal<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : warning C4346: 'rssd::RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type' : dependent name is not a type<br />
prefix with 'typename' to indicate a type<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C2146: syntax error : missing ';' before identifier 'RssdXmlProcessTreeRef'<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C2888: 'RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type Ref_Type' : symbol cannot be defined within namespace 'rssd'<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : fatal error C1903: unable to recover from previous error(s); stopping compilation</p>
</blockquote>
<p>dann dachte hey versuchts es mal so:</p>
<pre><code class="language-cpp">template&lt; typename V, typename D, typename O &gt; 
typename typedef RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type RssdXmlProcessTreeRef ;
</code></pre>
<p>dann wurde vs noch viel mitteilsamer</p>
<blockquote>
<p>c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(374) : error C2998: 'RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type rssd::RssdXmlProcessTreeRef' : cannot be a template definition<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(48) : error C2989: 'mlib::MString' : class template has already been declared as a non-class template<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mlib\mstring.h(59) : see declaration of 'mlib::MString'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(56) : error C2989: 'mlib::MXmlData' : class template has already been declared as a non-class template<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmldata.h(79) : see declaration of 'mlib::MXmlData'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : error C2989: 'mlib::MXmlTypeWrapper' : class template has already been declared as a non-class template<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlparameter.h(56) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(21) : error C2039: 'GetCardinality' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(22) : error C2270: 'GetCardinality' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(30) : error C2039: 'GetSize' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(31) : error C2270: 'GetSize' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(38) : error C2039: 'Resize' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(39) : error C2270: 'Resize' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(46) : error C2039: 'GetSubstructure' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(47) : error C2270: 'GetSubstructure' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(55) : error C2039: 'IsXmlSubDocString' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(56) : error C2270: 'IsXmlSubDocString' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(64) : error C2039: 'IsComplexElement' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(65) : error C2270: 'IsComplexElement' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(73) : error C2039: 'IsEqual' : is not a member of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(76) : error C2270: 'IsEqual' : modifiers not allowed on nonmember functions<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(77) : error C2673: 'IsEqual' : global functions do not have 'this' pointers<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.impl.h(77) : error C2027: use of undefined type 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmltypewrapper.h(271) : see declaration of 'mlib::MXmlTypeWrapper'<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlbasetypewrapper.h(82) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlbasetypewrapper.h(236) : see reference to class template instantiation 'mlib::MXmlBaseTypeWrapper&lt;T&gt;' being compiled<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlbasetypewrapper.h(82) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlenumwrapper.h(81) : see reference to class template instantiation 'mlib::MXmlBaseTypeWrapper&lt;T&gt;' being compiled<br />
with<br />
[<br />
T=int<br />
]<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlenumwrapper.impl.h(54) : error C2440: 'return' : cannot convert from 'mlib::MXmlEnumWrapper *' to 'mlib::MXmlTypeWrapper *'<br />
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlbasetypewrapper.h(82) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlboolwrapper.h(80) : see reference to class template instantiation 'mlib::MXmlBaseTypeWrapper&lt;T&gt;' being compiled<br />
with<br />
[<br />
T=bool<br />
]<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlboolwrapper.impl.h(61) : error C2065: 'mDescription' : undeclared identifier<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlboolwrapper.impl.h(70) : error C2440: 'return' : cannot convert from 'mlib::MXmlBoolWrapper *' to 'mlib::MXmlTypeWrapper *'<br />
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlvectorwrapper.h(72) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlvectorwrapper.h(280) : see reference to class template instantiation 'mlib::MXmlVectorWrapper&lt;T&gt;' being compiled<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlelementwrapper.h(70) : error C2504: 'mlib::MXmlTypeWrapper' : base class undefined<br />
c:\projekte\development\realsim\mlib\code.1.4.0\mxml\mxmlelementwrapper.h(260) : see reference to class template instantiation 'mlib::MXmlElementWrapper&lt;T&gt;' being compiled<br />
Will automatically link with rssdcommon_sd.1.4.0.vc8.lib<br />
Will automatically link with mdata_sd.1.4.0.vc8.lib</p>
</blockquote>
<p>ok ich hab für meinen fall das problem anderweitig gelöst und über einen basistypen von dem die templateklasse erbt dann entsprechend nötige definitionen gemacht.</p>
<p>Aber warum gehts eigentlich nicht? nur so grundsätzlich. Liegt es daran dass ich auf einen internen typen einer noch nicht parametrisierten termplateklasse zugreifen möchte? oder hab ich einfach nenn fehler gemacht oder ist das vs 2005 einfach zu doof dazu?</p>
<p>achja hier der anfang vom header</p>
<pre><code class="language-cpp">template&lt; typename V, typename D, typename O = mlib::MObserverRef &gt;
class RSSDSERVER_DLL_API RssdXmlProcessTree 
  : public mlib::MXmlData,
    public mlib::MRefInterface&lt; RssdXmlProcessTree&lt; V, D, O &gt; &gt;
{
  public:
</code></pre>
<p>Dieser ::Ref_Type wird übrigens vom MRefInterface interface intern definiert <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/1311425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311425</guid><dc:creator><![CDATA[Jason_Frost]]></dc:creator><pubDate>Fri, 22 Jun 2007 12:17:55 GMT</pubDate></item><item><title><![CDATA[Reply to typedef von typen innerhalb eine templateklasse on Fri, 22 Jun 2007 12:57:19 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Jason_Frost schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt; typename V, typename D, typename O &gt; 
typename typedef RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type RssdXmlProcessTreeRef ;
</code></pre>
</blockquote>
<p>Auch mal so versucht <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>
<pre><code class="language-cpp">typedef typename RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type RssdXmlProcessTreeRef ;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1311469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311469</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 22 Jun 2007 12:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to typedef von typen innerhalb eine templateklasse on Fri, 22 Jun 2007 13:04:30 GMT]]></title><description><![CDATA[<blockquote>
<p>template&lt;typename T&gt; typedef map&lt;string, T&gt; Registry;</p>
</blockquote>
<p>Dies ist kein gültiger C++ Standard Code, da so etwas nicht direkt möglich ist.<br />
Man muß sich dann mit einer Struktur/Klasse behelfen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
struct X
{
  typedef map&lt;string, T&gt; Registry;
};

// Benutzung:
X&lt;int&gt;::Registry reg;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1311484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311484</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Fri, 22 Jun 2007 13:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to typedef von typen innerhalb eine templateklasse on Fri, 22 Jun 2007 13:23:00 GMT]]></title><description><![CDATA[<p>Zusatz: Ab dem nächsten C++-Standard wir das wohl direkt über 'using' gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311514</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 22 Jun 2007 13:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to typedef von typen innerhalb eine templateklasse on Fri, 22 Jun 2007 13:39:17 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Auch mal so versucht <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>
<pre><code class="language-cpp">typedef typename RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type RssdXmlProcessTreeRef ;
</code></pre>
</blockquote>
<p>hatte auch einen riesigen berg an fehlern verursacht ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311534</guid><dc:creator><![CDATA[Jason_Frost]]></dc:creator><pubDate>Fri, 22 Jun 2007 13:39:17 GMT</pubDate></item><item><title><![CDATA[Reply to typedef von typen innerhalb eine templateklasse on Fri, 22 Jun 2007 16:01:01 GMT]]></title><description><![CDATA[<p>Dann schau dich nach einem neuen Compiler um oO<br />
mit ERST typedef, dann typename ists nämlich vollkommen richitg.<br />
Die Syntax lautet schließlich typedef AlterName NeuerName;</p>
<p>und für template-interne Typen muss man das typename voranstellen (um klarzustellen dass es sich nicht um ein klassenmember handelt):</p>
<p>typename RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type</p>
<p>so dass alles zusammenkommt zu:</p>
<pre><code class="language-cpp">typedef // ja, jetzt kommt die neudefinition bzw. umbenamsung
    typename RssdXmlProcessTree&lt;V,D,O&gt;::Ref_Type // alter Typname
    RssdXmlProcessTreeRef; // neuer Typname, aber auch nicht viel hübscher, aber was solls
</code></pre>
<p>/edit: erst typename und dann typedef wie du oben geschrieben hattest hat zu recht fehler verursacht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311648</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 22 Jun 2007 16:01:01 GMT</pubDate></item><item><title><![CDATA[Reply to typedef von typen innerhalb eine templateklasse on Mon, 25 Jun 2007 10:07:57 GMT]]></title><description><![CDATA[<p>also geht halt definitiv nicht mit meiner version von visual studio 2005</p>
<blockquote>
<p>c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(410) : error C2823: a typedef template is illegal<br />
c:\projekte\development\realsim\rssd\code.1.4.0\rssdserver\rssdxmlprocesstree.h(410) : error C2998: 'RssdXmlProcessTree&lt;V,D,O&gt;::TreeObserverRefType rssd::RssdXmlProcessTreeRef' : cannot be a template definition</p>
</blockquote>
<p>obriges sagt der compile bei diesen zeilen source code <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>
<pre><code class="language-cpp">[class RssdXmlProcessTree declaration ]
} ;  /* end class RssdXmlProcessTree */

template&lt; typename V, typename D, typename O&gt;
typedef typename RssdXmlProcessTree&lt;V, D, O&gt;::Ref_Type RssdXmlProcessTreeRef ;
</code></pre>
<p>diese definition befindet sich übrigens außerhalb der klasse, nicht innerhalb. nur um verwirrungen vorzubeugen <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/1313218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313218</guid><dc:creator><![CDATA[Jason_Frost]]></dc:creator><pubDate>Mon, 25 Jun 2007 10:07:57 GMT</pubDate></item><item><title><![CDATA[Reply to typedef von typen innerhalb eine templateklasse on Mon, 25 Jun 2007 10:18:51 GMT]]></title><description><![CDATA[<p>Ich würde sagen, dass du einfach nochmal diesen Thread hier lesen solltest. Hier wurde nämlich ganz klar gesagt, dass es keine template-typedefs gibt.</p>
<pre><code class="language-cpp">template&lt; typename V, typename D, typename O&gt;
struct X
{
   typedef typename RssdXmlProcessTree&lt;V, D, O&gt;::Ref_Type RssdXmlProcessTreeRef;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1313221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313221</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Mon, 25 Jun 2007 10:18:51 GMT</pubDate></item></channel></rss>