<?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[template-Funktion als friend-function einer Template Klasse ?]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich kämpfe gerade mal wieder mit Templates.<br />
Was läuft hier falsch:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class A : public B&lt;T&gt; {

 public:
/*
blablabla
*/
  private:

    friend T readFunc&lt;T&gt;(void *);

    friend void writeFunc&lt;T&gt;(T data, void*);
};

template &lt;typename T&gt;
T readFunc(void* inRefCon)
{
    A&lt;T&gt;* pA = static_cast&lt;A&lt;T&gt;*&gt;(inRefCon);
    return pA-&gt;data();
}

template &lt;typename T&gt;
void writeFunc(T data, void* inRefCon)
{
    A&lt;T&gt;* pA = static_cast&lt;A&lt;T&gt;*&gt;(inRefCon);
    pA-&gt;set(data);
}
</code></pre>
<p>Wie unschwer zu erkennen ist, muss die readFunc bzw writeFunc vom Datentyp her zur Klasse A passen.</p>
<p>Der Kompiler moniert mir:</p>
<pre><code>error: ‘readFunc’ is neither function nor member function; cannot be declared friend
error: expected ‘;’ before ‘&lt;’ token
</code></pre>
<p>bevor jetzt die Unkenrufe kommen &quot;mach doch ne Memberfunktion draus&quot;, geht nicht, die Funktionen müssen als Funktionspointer in eine C-API, daher nix mit memberfunktion.</p>
<p>Danke und ein frohes neues Jahr an Alle!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230781/template-funktion-als-friend-function-einer-template-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 04:08:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230781.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Jan 2009 22:30:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template-Funktion als friend-function einer Template Klasse ? on Thu, 01 Jan 2009 22:32:54 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich kämpfe gerade mal wieder mit Templates.<br />
Was läuft hier falsch:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class A : public B&lt;T&gt; {

 public:
/*
blablabla
*/
  private:

    friend T readFunc&lt;T&gt;(void *);

    friend void writeFunc&lt;T&gt;(T data, void*);
};

template &lt;typename T&gt;
T readFunc(void* inRefCon)
{
    A&lt;T&gt;* pA = static_cast&lt;A&lt;T&gt;*&gt;(inRefCon);
    return pA-&gt;data();
}

template &lt;typename T&gt;
void writeFunc(T data, void* inRefCon)
{
    A&lt;T&gt;* pA = static_cast&lt;A&lt;T&gt;*&gt;(inRefCon);
    pA-&gt;set(data);
}
</code></pre>
<p>Wie unschwer zu erkennen ist, muss die readFunc bzw writeFunc vom Datentyp her zur Klasse A passen.</p>
<p>Der Kompiler moniert mir:</p>
<pre><code>error: ‘readFunc’ is neither function nor member function; cannot be declared friend
error: expected ‘;’ before ‘&lt;’ token
</code></pre>
<p>bevor jetzt die Unkenrufe kommen &quot;mach doch ne Memberfunktion draus&quot;, geht nicht, die Funktionen müssen als Funktionspointer in eine C-API, daher nix mit memberfunktion.</p>
<p>Danke und ein frohes neues Jahr an Alle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638158</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 01 Jan 2009 22:32:54 GMT</pubDate></item><item><title><![CDATA[Reply to template-Funktion als friend-function einer Template Klasse ? on Thu, 01 Jan 2009 22:48:09 GMT]]></title><description><![CDATA[<p>Hallo,<br />
sind die beiden Funktionen denn irgendwie zum Punkt der friend-Deklaration bekannt?</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
T readFunc(void* inRefCon)
{
    A&lt;T&gt;* pA = static_cast&lt;A&lt;T&gt;*&gt;(inRefCon);
    return pA-&gt;data();
}

template &lt;typename T&gt;
void writeFunc(T data, void* inRefCon)
{
    A&lt;T&gt;* pA = static_cast&lt;A&lt;T&gt;*&gt;(inRefCon);
    pA-&gt;set(data);
}

template&lt;typename T&gt;
class B
{
};

template &lt;typename T&gt;
class A: public B&lt;T&gt;
{
public:

private:
  friend T readFunc&lt;T&gt;(void *);
  friend void writeFunc&lt;T&gt;(T data, void*);

  void set(T const&amp; data);
  T const&amp; data();
};

int main()
{
  A&lt;int&gt; a;
  writeFunc&lt;int&gt;(1, &amp;a);
  readFunc&lt;int&gt;(&amp;a);
}
</code></pre>
<p>Kompiliert bei mir anstandslos (gcc).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638161</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Thu, 01 Jan 2009 22:48:09 GMT</pubDate></item><item><title><![CDATA[Reply to template-Funktion als friend-function einer Template Klasse ? on Thu, 01 Jan 2009 22:50:13 GMT]]></title><description><![CDATA[<p>guuuuuter Input!</p>
<p>Habe jetzt zwei deklarationen (nicht definitionen) oberhalb der Klasse eingefügt (und die Definitionen unten gelassen wie sie sind).</p>
<p>Kompiliert!<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638162</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 01 Jan 2009 22:50:13 GMT</pubDate></item></channel></rss>