<?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[Frage zu Templates und typedef]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich habe folgende Situation: Ein größeres Projekt, sehr viele Templates (auch template-Polymorphismus, etc). Jetzt habe ich einige Hauptklassen, die viele Template-Parameter brauchen. Da ich diese ungerne jedes mal hinschreiben möchte, würde ich gerne eine &quot;Konfigurationsklasse&quot; hernehmen. Ich habe mir das Ganze in etwa so vorgestellt:</p>
<pre><code class="language-cpp">template &lt;class _A, class _B&gt; class Conf {
protected:
  typedef _A A;
  typedef _B B;
};

template &lt;class C&gt; class M : protected C {
using C::A;
using C::B;
public:
  void test() {
    A a;
    B b;
  };
};
</code></pre>
<p>Leider geht das so nicht, der Compiler kennt offenbar A, B in der Klasse M nicht und spuckt Fehlermeldungen aus, dass er einen &quot;;&quot; erwarten würde (aber keinen undeclared identifier).</p>
<p>Was muss ich tun, damit das funktioniert? Gibt es eventuell schönere Lösungen, als ich mir das jetzt vorgestellt habe?</p>
<p>Danke!<br />
Lucas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255314/frage-zu-templates-und-typedef</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 02:12:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255314.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Nov 2009 21:41:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Templates und typedef on Sat, 28 Nov 2009 21:42:38 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich habe folgende Situation: Ein größeres Projekt, sehr viele Templates (auch template-Polymorphismus, etc). Jetzt habe ich einige Hauptklassen, die viele Template-Parameter brauchen. Da ich diese ungerne jedes mal hinschreiben möchte, würde ich gerne eine &quot;Konfigurationsklasse&quot; hernehmen. Ich habe mir das Ganze in etwa so vorgestellt:</p>
<pre><code class="language-cpp">template &lt;class _A, class _B&gt; class Conf {
protected:
  typedef _A A;
  typedef _B B;
};

template &lt;class C&gt; class M : protected C {
using C::A;
using C::B;
public:
  void test() {
    A a;
    B b;
  };
};
</code></pre>
<p>Leider geht das so nicht, der Compiler kennt offenbar A, B in der Klasse M nicht und spuckt Fehlermeldungen aus, dass er einen &quot;;&quot; erwarten würde (aber keinen undeclared identifier).</p>
<p>Was muss ich tun, damit das funktioniert? Gibt es eventuell schönere Lösungen, als ich mir das jetzt vorgestellt habe?</p>
<p>Danke!<br />
Lucas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814729</guid><dc:creator><![CDATA[luke-r2d2]]></dc:creator><pubDate>Sat, 28 Nov 2009 21:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Templates und typedef on Sat, 28 Nov 2009 22:29:06 GMT]]></title><description><![CDATA[<p>Da helfen ein paar &quot;typename&quot;'s aus der Patsche. <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">template &lt;class _A, class _B&gt; class Conf {
protected:
  typedef _A A;
  typedef _B B;
};

template &lt;class C&gt; class M : protected C {
typedef typename C::A A;
typedef typename C::B B;
public:
  void test() {
     A a;
     B b;
  };
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1814743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814743</guid><dc:creator><![CDATA[prog]]></dc:creator><pubDate>Sat, 28 Nov 2009 22:29:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Templates und typedef on Sat, 28 Nov 2009 22:32:19 GMT]]></title><description><![CDATA[<p>Hm, okay, klar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Irgendwie auch nicht ganz schön, am liebsten wärs mir, wenn ich in der unteren Klasse gar nichts mehr schreiben müsste... Naja, wird dann wohl ein Preprocessor-Makro.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814745</guid><dc:creator><![CDATA[luke-r2d2]]></dc:creator><pubDate>Sat, 28 Nov 2009 22:32:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Templates und typedef on Sun, 29 Nov 2009 14:44:45 GMT]]></title><description><![CDATA[<p>ich glaube nicht, dass man das typedef braucht... : P</p>
<pre><code class="language-cpp">template &lt;typename T, typename U&gt;
class Conf
{
protected:
	typedef T A;
	typedef U B;
}; 

template &lt;typename C&gt;
class M : protected C
{
public:
	void test()
	{
		A a; 
		B b; 
	}; 
};

int main()
{
	M&lt; Conf&lt;int, int&gt; &gt; m;
	m.test();
}
</code></pre>
<p>kompiliert zumindest der msvc anstandslos - wär mir auch neu, wenn das nicht gehen sollte^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814979</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 29 Nov 2009 14:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Templates und typedef on Sun, 29 Nov 2009 15:08:44 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>wär mir auch neu, wenn das nicht gehen sollte^^</p>
</blockquote>
<p>Dann kannst du noch was lernen.<br />
Abhängige Basisklassen werden beim unqualifizierten Lookup nicht durchsucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815005</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 29 Nov 2009 15:08:44 GMT</pubDate></item></channel></rss>