<?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[Funktionszeiger, Threads &amp;amp; Headerdateien (Im Bezug zu C#)]]></title><description><![CDATA[<ol>
<li>
<p>Ich weiß was Funktionszeiger sind und auch was Delegates aus C# sind.<br />
Nun sehe ich keinen großen Unterschied zwischen beidem, jedoch wird immer wieder erwähnt das Delegates &quot;typsicher&quot; sind, im Gegensatz zu Funktionszeiger.<br />
Was genau habe ich mit darunter vorzustellen? Ich kann doch nicht einen &quot;(void*)(*fpointer)(int)&quot; der eine passsenden Funktion zugewiesen bekommt, einen String oder ähnliches mitgeben.</p>
</li>
<li>
<p>Threads wenn ich mir so die allgemeinen Implementierungen von Threads in C++ anschaue (z.B. Qt) dann wird für einen Thread immer eine extra Klasse benötigt in der der Thread enthalten ist. Ich verstehe leider nicht warum das so Umständlich ist, wenn es doch auch so einfach wie in C# geht?</p>
</li>
</ol>
<pre><code>Thread thread = new Thread(Methode);
</code></pre>
<ol start="3">
<li>Wo liegt der Sinn dahinter, Funktionsdeklarationen und -definitionen in verschiedene Dateien zu trennen? Wenn ich in C++ etwas am Funktionskopf ädnern will, muss ich immer auf beide Dateien achten. In C# habe ich alles in einem und wenn ich den Quellcode nicht sehen will, klappe ich ihn einfach aus?<br />
Zumal ich schon des öfteren Probleme mit dem einbinden von Headerdateien hatte (Stichwort &quot;headerdatei.h wurde schonmal eingebunden&quot;), was aber wohl eher ein Anfängerfehler von mir ist.</li>
</ol>
<p>PS: Der Post nimmt starken Bezug zu C#, wusste leider nicht genau wo ich ihn erstellen soll, hoffe es ist hier in Ordnung.<br />
PPS: Das hier soll kein &quot;C# ist besser als C++&quot; Thread sein, ich will hier garnicht sagen welche Lösung besser ist. Ich würde aber gerne verstehen warum C++ diesen Weg gegangen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208226/funktionszeiger-threads-amp-headerdateien-im-bezug-zu-c</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 19:37:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208226.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Mar 2008 15:31:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionszeiger, Threads &amp;amp; Headerdateien (Im Bezug zu C#) on Sun, 16 Mar 2008 15:31:24 GMT]]></title><description><![CDATA[<ol>
<li>
<p>Ich weiß was Funktionszeiger sind und auch was Delegates aus C# sind.<br />
Nun sehe ich keinen großen Unterschied zwischen beidem, jedoch wird immer wieder erwähnt das Delegates &quot;typsicher&quot; sind, im Gegensatz zu Funktionszeiger.<br />
Was genau habe ich mit darunter vorzustellen? Ich kann doch nicht einen &quot;(void*)(*fpointer)(int)&quot; der eine passsenden Funktion zugewiesen bekommt, einen String oder ähnliches mitgeben.</p>
</li>
<li>
<p>Threads wenn ich mir so die allgemeinen Implementierungen von Threads in C++ anschaue (z.B. Qt) dann wird für einen Thread immer eine extra Klasse benötigt in der der Thread enthalten ist. Ich verstehe leider nicht warum das so Umständlich ist, wenn es doch auch so einfach wie in C# geht?</p>
</li>
</ol>
<pre><code>Thread thread = new Thread(Methode);
</code></pre>
<ol start="3">
<li>Wo liegt der Sinn dahinter, Funktionsdeklarationen und -definitionen in verschiedene Dateien zu trennen? Wenn ich in C++ etwas am Funktionskopf ädnern will, muss ich immer auf beide Dateien achten. In C# habe ich alles in einem und wenn ich den Quellcode nicht sehen will, klappe ich ihn einfach aus?<br />
Zumal ich schon des öfteren Probleme mit dem einbinden von Headerdateien hatte (Stichwort &quot;headerdatei.h wurde schonmal eingebunden&quot;), was aber wohl eher ein Anfängerfehler von mir ist.</li>
</ol>
<p>PS: Der Post nimmt starken Bezug zu C#, wusste leider nicht genau wo ich ihn erstellen soll, hoffe es ist hier in Ordnung.<br />
PPS: Das hier soll kein &quot;C# ist besser als C++&quot; Thread sein, ich will hier garnicht sagen welche Lösung besser ist. Ich würde aber gerne verstehen warum C++ diesen Weg gegangen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475290</guid><dc:creator><![CDATA[anonym]]></dc:creator><pubDate>Sun, 16 Mar 2008 15:31:24 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger, Threads &amp;amp; Headerdateien (Im Bezug zu C#) on Sun, 16 Mar 2008 16:13:54 GMT]]></title><description><![CDATA[<p>anonym schrieb:</p>
<blockquote>
<p>Ich kann doch nicht einen &quot;(void*)(*fpointer)(int)&quot; der eine passsenden Funktion zugewiesen bekommt, einen String oder ähnliches mitgeben.</p>
</blockquote>
<p>Oh, können kannst du es schon (da gibt es z.B. ganz böse casts... ;p<br />
Aber ich glaube hier sollte man auch eher mit C Vergleichen, da auch C++ sehr typsicherer ist. Dennoch bietet C++ teilweise implizite Umwandlungen die in einigen Fällen nicht gewünscht sind, und auch der Begriff NULL ist gefährlich (Nimm einfach mal zwei Methoden gleichen namens, bei dem der eine einen int, der andere einen Zeiger annimmt. Nun welche Funktion wird bei NULL aufgerufen? (Anmerkung: hier wird der nächste Standard etwas ändern)</p>
<p>anonym schrieb:</p>
<blockquote>
<ol start="2">
<li>Threads wenn ich mir so die allgemeinen Implementierungen von Threads in C++ anschaue (z.B. Qt) dann wird für einen Thread immer eine extra Klasse benötigt in der der Thread enthalten ist. Ich verstehe leider nicht warum das so Umständlich ist, wenn es doch auch so einfach wie in C# geht?</li>
</ol>
<pre><code>Thread thread = new Thread(Methode);
</code></pre>
</blockquote>
<p>Wieso sollte es so umständlich sein. Du hast in C++ soviele Bibliotheken das du dir aussuchen kannst welche Art du vorziehst. Ich kenne QT nicht gut genug um zu wissen ob es dort auch anders geht.</p>
<p>anonym schrieb:</p>
<blockquote>
<ol start="3">
<li>Wo liegt der Sinn dahinter, Funktionsdeklarationen und -definitionen in verschiedene Dateien zu trennen? Wenn ich in C++ etwas am Funktionskopf ädnern will, muss ich immer auf beide Dateien achten. In C# habe ich alles in einem und wenn ich den Quellcode nicht sehen will, klappe ich ihn einfach aus?</li>
</ol>
</blockquote>
<p>Das hat mehrere Gründe und Zeitaufwand beim Linken, Reduzierung von Abhängigkeiten sind nur ein paar Beispiele. Davon abgesehen sollten Funktionsköpfe sich eh sehr selten (im Verhältnis zur Implementierung) ändern.</p>
<p>anonym schrieb:</p>
<blockquote>
<p>Zumal ich schon des öfteren Probleme mit dem einbinden von Headerdateien hatte (Stichwort &quot;headerdatei.h wurde schonmal eingebunden&quot;), was aber wohl eher ein Anfängerfehler von mir ist.</p>
</blockquote>
<p>Such mal nach den Stichworten:<br />
* Includeguards<br />
* Vorwärtsdeklaration<br />
dies sind zwei Punkte die man Kennen sollte bei C++Headern</p>
<p>anonym schrieb:</p>
<blockquote>
<p>PPS: Das hier soll kein &quot;C# ist besser als C++&quot; Thread sein, ich will hier garnicht sagen welche Lösung besser ist. Ich würde aber gerne verstehen warum C++ diesen Weg gegangen ist.</p>
</blockquote>
<p>Falsche Frage: Die Frage ist eher umgekehrt, warum ist C# diesen Weg gegangen. C++ ist 30(!!!) Jahre alt, die Sprache wandelt sich zwar über die Zeit, wird aber nicht alle Konzepte einfach über Bord werfen können. Die Schwerpunkte beider Sprachen liegen in völlig anderen Bereichen (z.B. Liegt C++ in Punkto Performance und Mächtigkeit nicht allso weit von C entfernt, C# bietet dafür einen leichteren Einstieg, eine Bibliothek die möglichst alles abdeckt und höhere Sicherheitsaspekte).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475319</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 16 Mar 2008 16:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger, Threads &amp;amp; Headerdateien (Im Bezug zu C#) on Sun, 16 Mar 2008 17:54:05 GMT]]></title><description><![CDATA[<blockquote>
<p>Zumal ich schon des öfteren Probleme mit dem einbinden von Headerdateien hatte (Stichwort &quot;headerdatei.h wurde schonmal eingebunden&quot;), was aber wohl eher ein Anfängerfehler von mir ist.</p>
</blockquote>
<p>Das Problem lässt sich einfach lösen,<br />
du schreibst einfach ganz oben in deine Headerdatei:</p>
<pre><code class="language-cpp">#ifndef _KLASSENNAME_H_ // könnte auch #ifndef blub und #define blub heißen
#define _KLASSENNAME_H_ // ich benutz nur immer gern den Klassennamen
// damit man weiß was dahintersteckt ;)
</code></pre>
<p>und ganz am Ende:</p>
<pre><code class="language-cpp">#endif
</code></pre>
<p>Dann kannst du die Datei nurnoch 1x einziehen, bzw selbst<br />
wenn du sie mehrmals einziehst passiert nichts.</p>
<p>#edit:</p>
<blockquote>
<p>PPS: Das hier soll kein &quot;C# ist besser als C++&quot; Thread sein, ich will hier garnicht sagen welche Lösung besser ist. Ich würde aber gerne verstehen warum C++ diesen Weg gegangen ist.</p>
</blockquote>
<p>Natürlich gibt es Dinge die in C# besser sind wie in C++,<br />
könnte aber einfach dadran liegen das C# eine Weiterentwicklung ist <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/1475380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475380</guid><dc:creator><![CDATA[blub* 0]]></dc:creator><pubDate>Sun, 16 Mar 2008 17:54:05 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger, Threads &amp;amp; Headerdateien (Im Bezug zu C#) on Mon, 17 Mar 2008 19:38:53 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>... und auch der Begriff NULL ist gefährlich (Nimm einfach mal zwei Methoden gleichen namens, bei dem der eine einen int, der andere einen Zeiger annimmt. Nun welche Funktion wird bei NULL aufgerufen? (Anmerkung: hier wird der nächste Standard etwas ändern)</p>
</blockquote>
<p>Wie ist das eigentlich, wenn man direkt 0 als Argument übergibt. Wird da die Funktion mit dem Pointer oder mit dem Integer aufgerufen? Ich denke letzteres aber man weiß ja nie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1476165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1476165</guid><dc:creator><![CDATA[_NULL_]]></dc:creator><pubDate>Mon, 17 Mar 2008 19:38:53 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger, Threads &amp;amp; Headerdateien (Im Bezug zu C#) on Mon, 17 Mar 2008 22:27:55 GMT]]></title><description><![CDATA[<p><em>NULL</em> schrieb:</p>
<blockquote>
<p>Wie ist das eigentlich, wenn man direkt 0 als Argument übergibt. Wird da die Funktion mit dem Pointer oder mit dem Integer aufgerufen? Ich denke letzteres aber man weiß ja nie.</p>
</blockquote>
<p>Du denkst richtig und jetzt weißt du auch. 0 ist eine Integerkonstante, die besser auf ein int passt als auf einen Zeiger, auf den sie erst implizit gecastet werden müsste. Bei NULL ists afaik nicht ganz klar, ich meine aber dass Scott Meyers was dazu in einem seiner effective C++ Bücher geschrieben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1476229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1476229</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 17 Mar 2008 22:27:55 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger, Threads &amp;amp; Headerdateien (Im Bezug zu C#) on Mon, 17 Mar 2008 22:43:42 GMT]]></title><description><![CDATA[<p>NULL ist einfach nur ein Makro das 0 ist. NULL liest sich nur besser 0. Da ist nichts unklar.</p>
<p>Mit C++0x wird es aber einen nullptr geben, also ein echtes Null für Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1476237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1476237</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 17 Mar 2008 22:43:42 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger, Threads &amp;amp; Headerdateien (Im Bezug zu C#) on Mon, 17 Mar 2008 22:44:24 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>...Bei NULL ists afaik nicht ganz klar, ich meine aber dass Scott Meyers was dazu in einem seiner effective C++ Bücher geschrieben hat.</p>
</blockquote>
<p>NULL ist häufig ein define auf 0. Daher meist problematisch.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1476238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1476238</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 17 Mar 2008 22:44:24 GMT</pubDate></item></channel></rss>