<?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[Erklärung zu Enumerations, Funktionen und main]]></title><description><![CDATA[<p>Der Titel klingt jetzt vielleicht etwas aufgeblasen, aber meine Frage richtet sich auf einen Punkt, an dem diese drei Dinge zusammentreffen.</p>
<p>Ich nutze MSVC++08EE und habe folgenden Code eingegeben. Der Cursor befindet sich gerade hinter alpha(.</p>
<pre><code class="language-cpp">// code
enum testing {a, b, c, d, e} test1 = d, test2;

testing alpha(
int main()
{
	// code
</code></pre>
<p>Ich hab zum Ausprobieren eine Funktion erstellen wollen, die als Rückgabe-Typ enum testing hat. Wenn ich eine Klammer öffne, dann zeigt mir VS an, welche Argumente an dieser Stelle erwartet werden. Und jetzt kommt das komische:</p>
<p>Der erste Tooltip, den ich an dieser Stelle erhielt war:<br />
<em>testing alpha(const testing&amp;)</em><br />
Das sieht für mich nach der Syntax eines Copy-Constructors aus.</p>
<p>Diesen Tooltip konnte ich komischerweise nicht mehr reproduzieren, jetzt wird nur noch folgendes angezeigt:<br />
*testing alpha(int (<em>main)(void))</em></p>
<p>Laut VS befinde ich mich gerade in folgender Funktion:<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <em>alpha(int (</em>)(void) main)*</p>
<p>Kann mir bitte jemand den Tooltip erklären, den VS mir da vorschlägt? Und bitte auch die Syntax der <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Funktionsdeklaration in der ich mich angeblich befinde. Ich habe gute Grundkenntnisse von C++, das schließt Klassen, Vererbung, Überladen, Templates, Basic I/O und so weiter ein, aber das da oben verstehe ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261622/erklärung-zu-enumerations-funktionen-und-main</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 04:31:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261622.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Feb 2010 14:51:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erklärung zu Enumerations, Funktionen und main on Sun, 21 Feb 2010 15:18:16 GMT]]></title><description><![CDATA[<p>Der Titel klingt jetzt vielleicht etwas aufgeblasen, aber meine Frage richtet sich auf einen Punkt, an dem diese drei Dinge zusammentreffen.</p>
<p>Ich nutze MSVC++08EE und habe folgenden Code eingegeben. Der Cursor befindet sich gerade hinter alpha(.</p>
<pre><code class="language-cpp">// code
enum testing {a, b, c, d, e} test1 = d, test2;

testing alpha(
int main()
{
	// code
</code></pre>
<p>Ich hab zum Ausprobieren eine Funktion erstellen wollen, die als Rückgabe-Typ enum testing hat. Wenn ich eine Klammer öffne, dann zeigt mir VS an, welche Argumente an dieser Stelle erwartet werden. Und jetzt kommt das komische:</p>
<p>Der erste Tooltip, den ich an dieser Stelle erhielt war:<br />
<em>testing alpha(const testing&amp;)</em><br />
Das sieht für mich nach der Syntax eines Copy-Constructors aus.</p>
<p>Diesen Tooltip konnte ich komischerweise nicht mehr reproduzieren, jetzt wird nur noch folgendes angezeigt:<br />
*testing alpha(int (<em>main)(void))</em></p>
<p>Laut VS befinde ich mich gerade in folgender Funktion:<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <em>alpha(int (</em>)(void) main)*</p>
<p>Kann mir bitte jemand den Tooltip erklären, den VS mir da vorschlägt? Und bitte auch die Syntax der <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Funktionsdeklaration in der ich mich angeblich befinde. Ich habe gute Grundkenntnisse von C++, das schließt Klassen, Vererbung, Überladen, Templates, Basic I/O und so weiter ein, aber das da oben verstehe ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859111</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 21 Feb 2010 15:18:16 GMT</pubDate></item><item><title><![CDATA[Reply to Erklärung zu Enumerations, Funktionen und main on Sun, 21 Feb 2010 15:00:12 GMT]]></title><description><![CDATA[<p>Lucky#Slevin schrieb:</p>
<blockquote>
<p>Ich habe gute Grundkenntnisse von C++, das schließt Klassen, Vererbung, Überladen, Templates, Basic I/O und so weiter ein, aber das da oben verstehe ich nicht.</p>
</blockquote>
<p>Keine Sorge, das Problem liegt nicht bei deinen C++-Kenntnissen. <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>
<p>Der Vorschlag <code>testing alpha(const testing&amp;)</code> geschieht wohl aus Konsistenzgründen und soll dir anzeigen, dass du <code>alpha</code> mit einem anderen <code>testing</code> -Objekt initialisieren kannst (es wird von einer Variablendeklaration ausgegangen). Bei skalaren Typen (darunter <code>enum</code> s) wird jedoch kein Kopierkonstruktor aufgerufen.</p>
<p>Das <code>testing alpha(int (*main)(void))</code> hingegen liegt einfach daran, dass Code analysiert wurde, der noch unvollständig war. Die IDE versucht dann, das sinnvoll zu interpretieren, und stösst auf einen Funktionszeiger-Parameter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859119</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 21 Feb 2010 15:00:12 GMT</pubDate></item><item><title><![CDATA[Reply to Erklärung zu Enumerations, Funktionen und main on Sun, 21 Feb 2010 15:04:49 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>... und stösst auf einen Funktionszeiger-Parameter.</p>
</blockquote>
<p>Und was ist das? Ich hab mal was von Funktionszeigern gehört, hab mich aber noch nicht genug damit beschäftigt um genaueres drüber zu wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859122</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 21 Feb 2010 15:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to Erklärung zu Enumerations, Funktionen und main on Sun, 21 Feb 2010 15:08:02 GMT]]></title><description><![CDATA[<p>Lucky#Slevin schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>... und stösst auf einen Funktionszeiger-Parameter.</p>
</blockquote>
<p>Und was ist das? Ich hab mal was von Funktionszeigern gehört, hab mich aber noch nicht genug damit beschäftigt um genaueres drüber zu wissen.</p>
</blockquote>
<p>Das Thema gab's gestern hier im Forum, wenn auch unter einem etwas unglücklichen Threadtitel, der nicht deutlich macht, worum es geht:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-261561.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-261561.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859126</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 21 Feb 2010 15:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to Erklärung zu Enumerations, Funktionen und main on Sun, 21 Feb 2010 15:09:52 GMT]]></title><description><![CDATA[<p>Lucky#Slevin schrieb:</p>
<blockquote>
<p>Und was ist das? Ich hab mal was von Funktionszeigern gehört, hab mich aber noch nicht genug damit beschäftigt um genaueres drüber zu wissen.</p>
</blockquote>
<p>Mit Funktionszeiger kannst du (wer hätte das gedacht) auf Funktionen zeigen. Damit kannst du zum Beispiel Callbacks realisieren.</p>
<p>Hier findest du eine kleine Übersicht, auch was die Syntax anbelangt:<br />
<a href="http://www.newty.de/fpt/index.html" rel="nofollow">http://www.newty.de/fpt/index.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859128</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 21 Feb 2010 15:09:52 GMT</pubDate></item><item><title><![CDATA[Reply to Erklärung zu Enumerations, Funktionen und main on Sun, 21 Feb 2010 15:17:24 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Lucky#Slevin schrieb:</p>
<blockquote>
<p>Und was ist das? Ich hab mal was von Funktionszeigern gehört, hab mich aber noch nicht genug damit beschäftigt um genaueres drüber zu wissen.</p>
</blockquote>
<p>Mit Funktionszeiger kannst du (wer hätte das gedacht) auf Funktionen zeigen. Damit kannst du zum Beispiel Callbacks realisieren.</p>
<p>Hier findest du eine kleine Übersicht, auch was die Syntax anbelangt:<br />
<a href="http://www.newty.de/fpt/index.html" rel="nofollow">http://www.newty.de/fpt/index.html</a></p>
</blockquote>
<p>Danke, dieses Tutorial hatte ich schon einmal gefunden, aber noch nicht gelesen. Da der Link innerhalb des Textes nicht funktioniert muss ich fragen: Was sind Callbacks?</p>
<p>Wikipedia schrieb:</p>
<blockquote>
<p>Eine Rückruffunktion (englisch callback function) bezeichnet in der Informatik eine Funktion, die einer anderen Funktion als Parameter übergeben wird, und von dieser unter gewissen Bedingungen aufgerufen wird. Dieses Vorgehen folgt dem Entwurfsmuster der Inversion of Control.</p>
<p>Dadurch wird es möglich, Funktionen allgemein zu definieren und erst beim Aufrufen der Funktion durch Angabe der Rückruffunktion das Verhalten exakt zu bestimmen. Häufig bekommt eine Rückruffunktion gar keinen Namen, sondern wird als anonyme Funktion direkt beim Aufruf definiert (siehe auch Lambda-Kalkül). Über Rückruffunktionen erreicht man eine lose Kopplung zwischen einzelnen Komponenten.</p>
</blockquote>
<p>So wie ich das hier verstehe, ruft eine Funktion A in main eine Funktion B auf, die in manchen Fällen eine andere Funktion aufruft. Damit B weiß, welche aufgerufen werden soll, gibt A den Namen von C an B weiter. Und C wird dann callback function genannt. Richtig?<br />
Wird dann der Akt C aufzurufen &quot;callback&quot; genannt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859133</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 21 Feb 2010 15:17:24 GMT</pubDate></item></channel></rss>