<?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[Expected Templatename before &amp;quot;&amp;lt;&amp;quot;]]></title><description><![CDATA[<p>Hi,</p>
<p>obige Fehlermeldung erhalte ich beim Kompilieren meines Projekts in einer Klasse.<br />
Hier der Code:</p>
<p>Beim erben von MessageBase&lt;ShootMsg&gt; meckert der Compiler.</p>
<pre><code>#include &quot;messagebase.h&quot;
#include &quot;../animationsystem.h&quot;

class ShootMsg
:public MessageBase&lt;ShootMsg&gt; //&lt;-----  Hierdrauf bezieht sich die Meldung
{
public:
    ShootMsg()
    :MessageBase(AnimationSystem::type)
    {}
};
</code></pre>
<p>MessageBase:</p>
<pre><code>#include &quot;../system.h&quot;
#include &quot;message.h&quot;

inline unsigned long getNextMessageType()
{
   static unsigned long next = 0;
   return next++;
}

template &lt;class T&gt;
class MessageBase
:public Message
{
protected:
    bool _asap;              // Deliver as soon as possible (asap)
    System::id _receiver;
public:
    static unsigned long type;
    unsigned long getType() const { return T::type; }

    MessageBase(System::id receiver,bool asap = false)
    :_asap(asap),_receiver(receiver)
    {}

    virtual unsigned long receiver() { return _receiver; }
    virtual bool          asap()     { return _asap; }
};

template &lt;class T&gt;
unsigned long MessageBase&lt;T&gt;::type(getNextMessageType());
</code></pre>
<p>und Message:</p>
<pre><code>class Message
{
public:
    virtual unsigned long getType() const = 0;

    virtual unsigned long receiver() { return 0; }      //0 is the value for &quot;no receiver&quot;
    virtual bool asap()              { return false; }  //false is default value
};
</code></pre>
<p>Die drei Files liegen alle im selben Ordner.<br />
Wieso wird MessageBase nicht als Klassentemplate (oder wars Templateklasse?) erkannt?</p>
<p>Vielen Dank für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323156/expected-templatename-before-quot-lt-quot</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 09:14:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323156.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Jan 2014 21:32:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Expected Templatename before &amp;quot;&amp;lt;&amp;quot; on Sun, 19 Jan 2014 21:32:53 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>obige Fehlermeldung erhalte ich beim Kompilieren meines Projekts in einer Klasse.<br />
Hier der Code:</p>
<p>Beim erben von MessageBase&lt;ShootMsg&gt; meckert der Compiler.</p>
<pre><code>#include &quot;messagebase.h&quot;
#include &quot;../animationsystem.h&quot;

class ShootMsg
:public MessageBase&lt;ShootMsg&gt; //&lt;-----  Hierdrauf bezieht sich die Meldung
{
public:
    ShootMsg()
    :MessageBase(AnimationSystem::type)
    {}
};
</code></pre>
<p>MessageBase:</p>
<pre><code>#include &quot;../system.h&quot;
#include &quot;message.h&quot;

inline unsigned long getNextMessageType()
{
   static unsigned long next = 0;
   return next++;
}

template &lt;class T&gt;
class MessageBase
:public Message
{
protected:
    bool _asap;              // Deliver as soon as possible (asap)
    System::id _receiver;
public:
    static unsigned long type;
    unsigned long getType() const { return T::type; }

    MessageBase(System::id receiver,bool asap = false)
    :_asap(asap),_receiver(receiver)
    {}

    virtual unsigned long receiver() { return _receiver; }
    virtual bool          asap()     { return _asap; }
};

template &lt;class T&gt;
unsigned long MessageBase&lt;T&gt;::type(getNextMessageType());
</code></pre>
<p>und Message:</p>
<pre><code>class Message
{
public:
    virtual unsigned long getType() const = 0;

    virtual unsigned long receiver() { return 0; }      //0 is the value for &quot;no receiver&quot;
    virtual bool asap()              { return false; }  //false is default value
};
</code></pre>
<p>Die drei Files liegen alle im selben Ordner.<br />
Wieso wird MessageBase nicht als Klassentemplate (oder wars Templateklasse?) erkannt?</p>
<p>Vielen Dank für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2378394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2378394</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Sun, 19 Jan 2014 21:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to Expected Templatename before &amp;quot;&amp;lt;&amp;quot; on Sun, 19 Jan 2014 21:41:37 GMT]]></title><description><![CDATA[<p>Includeguards vergessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2378396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2378396</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 19 Jan 2014 21:41:37 GMT</pubDate></item><item><title><![CDATA[Reply to Expected Templatename before &amp;quot;&amp;lt;&amp;quot; on Sun, 19 Jan 2014 21:47:33 GMT]]></title><description><![CDATA[<p>SeppJ, ich danke dir hahahahahaha ohhhhh mein gott.</p>
<p>Folgendes, vielleicht passiert das irgendwem nochmal:</p>
<p>Ich hatte zunächst nur die Basisklasse message.h, welche ganz normal mit Includeguards erstellt wurde.<br />
Diese erweiterte ich dann zu messagebase.h (samt rename) OHNE die includeguards zu ändern (d.h. die lauten aktuell immernoch sinngemäß MESSAGE_H).<br />
Dann erstellte eine neue message.h die natürlich die selben Guards hat.</p>
<p>Oh man, hahahahaha.</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2378399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2378399</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Sun, 19 Jan 2014 21:47:33 GMT</pubDate></item></channel></rss>