<?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[was genau bedeutet das argument (int C::*)]]></title><description><![CDATA[<p>Im C++ templates wird diese Argmuent verwendet um letztlich Klassen zu identifizieren. Bei</p>
<pre><code class="language-cpp">void foo(typename C::X const*)
</code></pre>
<p>ist mir die Syntax und die BEdeutung klar, aber hier</p>
<pre><code class="language-cpp">void foo(int C::*)
</code></pre>
<p>nicht ganz.<br />
Hat darüber hinaus eventuell einer eine gute Seite im Netz für solche Syntax Fragen zur Hand?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205884/was-genau-bedeutet-das-argument-int-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 19:35:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205884.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Feb 2008 07:36:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to was genau bedeutet das argument (int C::*) on Tue, 19 Feb 2008 07:36:52 GMT]]></title><description><![CDATA[<p>Im C++ templates wird diese Argmuent verwendet um letztlich Klassen zu identifizieren. Bei</p>
<pre><code class="language-cpp">void foo(typename C::X const*)
</code></pre>
<p>ist mir die Syntax und die BEdeutung klar, aber hier</p>
<pre><code class="language-cpp">void foo(int C::*)
</code></pre>
<p>nicht ganz.<br />
Hat darüber hinaus eventuell einer eine gute Seite im Netz für solche Syntax Fragen zur Hand?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458583</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 19 Feb 2008 07:36:52 GMT</pubDate></item><item><title><![CDATA[Reply to was genau bedeutet das argument (int C::*) on Tue, 19 Feb 2008 08:16:09 GMT]]></title><description><![CDATA[<p>Das bedeutet nur, dass foo einen Pointer auf ein int-Member von C als Argument nimmt. Dem wurde nur kein Name gegeben, ähnlich wie bei <code>void bar(int);</code></p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class C {
  public:
  int i;
  int b;
};

int main() {
  foo(&amp;C::i);
  foo(&amp;C::b);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1458595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458595</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 19 Feb 2008 08:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to was genau bedeutet das argument (int C::*) on Tue, 19 Feb 2008 10:09:22 GMT]]></title><description><![CDATA[<p>sowas dachte ich mir. nur wie kann man somit auf klassen testen? was wenn wenn diese keine int variablen hat? dann klappt der test doch auch nicht, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458680</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 19 Feb 2008 10:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to was genau bedeutet das argument (int C::*) on Tue, 19 Feb 2008 10:11:26 GMT]]></title><description><![CDATA[<p>Das Buch steht bei mir zu Hause, ich bin grad auf Arbeit - wie testen sie damit auf Klassen? Zeig mal Beispiel <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/1458682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458682</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 19 Feb 2008 10:11:26 GMT</pubDate></item><item><title><![CDATA[Reply to was genau bedeutet das argument (int C::*) on Tue, 19 Feb 2008 10:13:43 GMT]]></title><description><![CDATA[<p>Wenn die Klasse keine int Variablen hat, kannst Du die Funktion nicht aufrufen, da es nichts gibt was vom Typ her dem Argument entspräche. Du kannst aber trotzdem so eine Funktion deklarieren, daran hindert Dich niemand.</p>
<p>Was meinst Du mit &quot;Klassen identifizieren&quot; überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458684</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 19 Feb 2008 10:13:43 GMT</pubDate></item><item><title><![CDATA[Reply to was genau bedeutet das argument (int C::*) on Tue, 19 Feb 2008 10:26:49 GMT]]></title><description><![CDATA[<p>ja, meine buch steht auch zu hause... verdammt... ich schau mal, ob ich es grad im netz finde</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458702</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 19 Feb 2008 10:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to was genau bedeutet das argument (int C::*) on Tue, 19 Feb 2008 10:34:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename T&gt;
class IsClassT {
  private:
    typedef char One;
    typedef struct { char a[2]; } Two;
    template&lt;typename C&gt; static One test(int C::*);
    template&lt;typename C&gt; static Two test(...);
  public:
    enum { Yes = sizeof(IsClassT&lt;T&gt;::test&lt;T&gt;(0)) == 1 };
    enum { No = !Yes };
};

template &lt;typename T&gt;
void check()
{
    if (IsClassT&lt;T&gt;::Yes) {
        std::cout &lt;&lt; &quot; IsClassT &quot; &lt;&lt; std::endl;
    }
    else {
        std::cout &lt;&lt; &quot; !IsClassT &quot; &lt;&lt; std::endl;
    }
}

template &lt;typename T&gt;
void checkT (T)
{
    check&lt;T&gt;();
}

#include &lt;iostream&gt;
#include &quot;isclasst.hpp&quot;

class MyClass {
};

struct MyStruct {
};

union MyUnion {
};

void myfunc()
{
}

enum E { e1 } e;

int main()
{
    std::cout &lt;&lt; &quot;int:     &quot;;
    check&lt;int&gt;();

    std::cout &lt;&lt; &quot;MyClass: &quot;;
    check&lt;MyClass&gt;();

    std::cout &lt;&lt; &quot;MyStruct:&quot;;
    MyStruct s;
    checkT(s);

    std::cout &lt;&lt; &quot;MyUnion: &quot;;
    check&lt;MyUnion&gt;();

    std::cout &lt;&lt; &quot;enum:    &quot;;
    checkT(e);

    std::cout &lt;&lt; &quot;myfunc():&quot;;
    checkT(myfunc);
}
</code></pre>
<p><a href="http://www.josuttis.com/tmplbook/" rel="nofollow">http://www.josuttis.com/tmplbook/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458705</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 19 Feb 2008 10:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to was genau bedeutet das argument (int C::*) on Tue, 19 Feb 2008 10:36:53 GMT]]></title><description><![CDATA[<p>Es geht dabei darum, dass eine Klasse C Member haben kann, unter anderem einen int (muss aber nicht sein) Damit ist das Konstrukt <code>int C::*</code> genau dann erlaubt, wenn C eine Klasse ist. Du hast natuerlich recht, das es fuer Klassen, die kein int-Member haben, so einen Pointer nicht geben kann - abgesehen vom Nullpointer, der gerade hier zum Einsatz kommt</p>
<pre><code class="language-cpp">sizeof(IsClassT&lt;T&gt;::test&lt;T&gt;(0)) == 1
</code></pre>
<p>Der Nullpointer kann also auch dann ein Pointer-auf-int-Mebmer-von-C sein, wenn C keine int-Member hat. Damit ist der Match besser als mit der Ellipse und der Test positiv.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458715</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 19 Feb 2008 10:36:53 GMT</pubDate></item></channel></rss>