<?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[reinterpret_cast:  konvertierung von int zu int!?]]></title><description><![CDATA[<p>huhu <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>
<p>zuallererst, ich bin anfänger in c++. das programm welches mir probleme bereitet, ist ein zahlenratespiel welches ich, anhand der idee von heiko kalista in seinem buch, versucht habe, als übung, selbst zu programmieren.<br />
der komplette code enthält etwa 200 zeilen, weshalb ich hier nur die abschnitte poste, von denen ich vermute, dass sie das problem hervorrufen. ich wäre sehr erfreut, wenn mir jemand einen anhaltspunkt oder die direkte lösung geben könnte. danke schonmal! hier erstmal die fehlermeldung:</p>
<pre><code>main.cpp(57) : error C2664: 'spielen' : Konvertierung des Parameters 2 von 'int (__cdecl *)(int)' in 'int' nicht moeglich
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
Fehler beim Ausführen von cl.exe.
</code></pre>
<p>was mich daran verwirrt ist, dass ich im ganzen programm nur integer verwende (bis auf eine ausnahme, die mit dem hier aber sicherlich nichts zu tun hat), weswegen doch eigentlich überhaupt kein casting nötig sein müsste, oder!?</p>
<p>erstmal die funktion 'spielen':</p>
<pre><code class="language-cpp">//SPIELEN
int spielen(int levelbereich, int level, int pc_highscore)
{
	int zahl_erraten = levelbereich;
	int zahl_eingegeben = 1;
	int versuche = 0;
	int bereich_zahl = level * 10;
	int punkte = 0;

	while (zahl_eingegeben != zahl_erraten)
	{
		versuche += 1;
		cout &lt;&lt; &quot;Das ist der &quot; &lt;&lt; versuche &lt;&lt; &quot; Versuch..\n&quot;;
		cout &lt;&lt; &quot;Waehle eine Zahl: &quot;;
		cin &gt;&gt; zahl_eingegeben;

		if (zahl_eingegeben != zahl_erraten)
			cout &lt;&lt; &quot;Falsch!\n&quot;;
			if (zahl_eingegeben &gt; zahl_erraten)
				cout &lt;&lt; &quot;Tipp: Die eingegebene Zahl ist groesser als die Gesuchte!\n&quot;;
			else if (zahl_eingegeben &lt; zahl_erraten)
				cout &lt;&lt; &quot;Tipp: Die eingegebene Zahl ist kleiner als die Gesuchte!\n&quot;;
		else if (zahl_eingegeben == zahl_erraten)
			cout &lt;&lt; &quot;Richtig!\n&quot;;
		else
			cout &lt;&lt; &quot;Falsche Eingabe! Bitte erneut eingeben!\n&quot;;

		punkte = bereich_zahl - versuche + 1;
		punkte *= level;
	}

	cout &lt;&lt; &quot;Du hast es geschafft! Die Zufallszahl war &quot; &lt;&lt; zahl_erraten &lt;&lt; &quot;!\n&quot;;
	cout &lt;&lt; &quot;Du hast es beim &quot; &lt;&lt; versuche &lt;&lt; &quot;. Versuch geschafft und somit &quot;;
	cout &lt;&lt; punkte &lt;&lt; &quot; Punkte erreicht!\n&quot;;
	if (pc_highscore &lt; punkte)
		cout &lt;&lt; &quot;Highscore geknackt! Herzlichen Glueckwunsch!\n\n&quot;;
	else if (pc_highscore == punkte)
		cout &lt;&lt; &quot;Highscore Gleichstand, WOW! Herzlichen Glueckwunsch!\n\n&quot;;
	else
		cout &lt;&lt; &quot;Highscore leider nicht geknackt!\n\n&quot;;

	return punkte;
}
</code></pre>
<p>hier der switch-case teil des menüs (die fehlermeldung bezieht sich auf zu definition des punkte integers durch den die funktion aufgerufen wird):</p>
<pre><code class="language-cpp">switch (menue_auswahl)
		{
			case ('S'): 
			case ('s'):
			{
				if (level_auswahl &lt; 1)
				{
					cout &lt;&lt; &quot;\nSie muessen zuerst ein Schwierigkeitslevel auswaehlen!\n\n&quot;;
					break;
				}
				else
				{
					cout &lt;&lt; &quot;\nSpiel wird gestartet!\n&quot;;
					punkte = spielen(levelbereich, levelauswahl, pc_highscore);
				}
			} break;
			case ('L'):
			case ('l'):...... usw. usw.
</code></pre>
<p>hier noch die deklaration und definiton der variablen in der main funktion:</p>
<pre><code class="language-cpp">//LOKALE VARIABLEN DEKLARIEREN UND DEFINIEREN
	char menue_auswahl;
	int level_auswahl = 0; 
	int levelbereich = (rand()%10)+1;
	int punkte = 0;
	int pc_highscore = 0;
</code></pre>
<p>ich denke - korrigiert mich bitte wenn ich da falsch liege - das nicht mehr benötigt wird, oder?</p>
<p>nun, er konnte zuerst nicht kompilieren, daraufhin habe ich das ganze mit reinterpret 'gecastet' (anmerkung: dieser art des castings wird in meinem buch keine zeile gewidmet, ich habe also keine ahnung, was sie wirklich bewirkt).<br />
das sah dann so aus:</p>
<pre><code class="language-cpp">punkte = spielen(levelbereich, reinterpret_cast&lt;int&gt; (levelauswahl), pc_highscore);
</code></pre>
<p>folge: kompiliervorgang erfolgreich, aber die punkte berechnung (die mit dem 2ten parameter der spielen-funktionen [levelauswahl] zusammenhaengt) funktioniert nicht mehr richtig.</p>
<p>ich hoffe, ich habe weder zuviel noch zu wenig code gepostet und mir kann recht einfach geholfen werden. danke! <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>
<p>actinium</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204310/reinterpret_cast-konvertierung-von-int-zu-int</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 09:34:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204310.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Feb 2008 14:16:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to reinterpret_cast:  konvertierung von int zu int!? on Fri, 01 Feb 2008 14:16:30 GMT]]></title><description><![CDATA[<p>huhu <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>
<p>zuallererst, ich bin anfänger in c++. das programm welches mir probleme bereitet, ist ein zahlenratespiel welches ich, anhand der idee von heiko kalista in seinem buch, versucht habe, als übung, selbst zu programmieren.<br />
der komplette code enthält etwa 200 zeilen, weshalb ich hier nur die abschnitte poste, von denen ich vermute, dass sie das problem hervorrufen. ich wäre sehr erfreut, wenn mir jemand einen anhaltspunkt oder die direkte lösung geben könnte. danke schonmal! hier erstmal die fehlermeldung:</p>
<pre><code>main.cpp(57) : error C2664: 'spielen' : Konvertierung des Parameters 2 von 'int (__cdecl *)(int)' in 'int' nicht moeglich
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
Fehler beim Ausführen von cl.exe.
</code></pre>
<p>was mich daran verwirrt ist, dass ich im ganzen programm nur integer verwende (bis auf eine ausnahme, die mit dem hier aber sicherlich nichts zu tun hat), weswegen doch eigentlich überhaupt kein casting nötig sein müsste, oder!?</p>
<p>erstmal die funktion 'spielen':</p>
<pre><code class="language-cpp">//SPIELEN
int spielen(int levelbereich, int level, int pc_highscore)
{
	int zahl_erraten = levelbereich;
	int zahl_eingegeben = 1;
	int versuche = 0;
	int bereich_zahl = level * 10;
	int punkte = 0;

	while (zahl_eingegeben != zahl_erraten)
	{
		versuche += 1;
		cout &lt;&lt; &quot;Das ist der &quot; &lt;&lt; versuche &lt;&lt; &quot; Versuch..\n&quot;;
		cout &lt;&lt; &quot;Waehle eine Zahl: &quot;;
		cin &gt;&gt; zahl_eingegeben;

		if (zahl_eingegeben != zahl_erraten)
			cout &lt;&lt; &quot;Falsch!\n&quot;;
			if (zahl_eingegeben &gt; zahl_erraten)
				cout &lt;&lt; &quot;Tipp: Die eingegebene Zahl ist groesser als die Gesuchte!\n&quot;;
			else if (zahl_eingegeben &lt; zahl_erraten)
				cout &lt;&lt; &quot;Tipp: Die eingegebene Zahl ist kleiner als die Gesuchte!\n&quot;;
		else if (zahl_eingegeben == zahl_erraten)
			cout &lt;&lt; &quot;Richtig!\n&quot;;
		else
			cout &lt;&lt; &quot;Falsche Eingabe! Bitte erneut eingeben!\n&quot;;

		punkte = bereich_zahl - versuche + 1;
		punkte *= level;
	}

	cout &lt;&lt; &quot;Du hast es geschafft! Die Zufallszahl war &quot; &lt;&lt; zahl_erraten &lt;&lt; &quot;!\n&quot;;
	cout &lt;&lt; &quot;Du hast es beim &quot; &lt;&lt; versuche &lt;&lt; &quot;. Versuch geschafft und somit &quot;;
	cout &lt;&lt; punkte &lt;&lt; &quot; Punkte erreicht!\n&quot;;
	if (pc_highscore &lt; punkte)
		cout &lt;&lt; &quot;Highscore geknackt! Herzlichen Glueckwunsch!\n\n&quot;;
	else if (pc_highscore == punkte)
		cout &lt;&lt; &quot;Highscore Gleichstand, WOW! Herzlichen Glueckwunsch!\n\n&quot;;
	else
		cout &lt;&lt; &quot;Highscore leider nicht geknackt!\n\n&quot;;

	return punkte;
}
</code></pre>
<p>hier der switch-case teil des menüs (die fehlermeldung bezieht sich auf zu definition des punkte integers durch den die funktion aufgerufen wird):</p>
<pre><code class="language-cpp">switch (menue_auswahl)
		{
			case ('S'): 
			case ('s'):
			{
				if (level_auswahl &lt; 1)
				{
					cout &lt;&lt; &quot;\nSie muessen zuerst ein Schwierigkeitslevel auswaehlen!\n\n&quot;;
					break;
				}
				else
				{
					cout &lt;&lt; &quot;\nSpiel wird gestartet!\n&quot;;
					punkte = spielen(levelbereich, levelauswahl, pc_highscore);
				}
			} break;
			case ('L'):
			case ('l'):...... usw. usw.
</code></pre>
<p>hier noch die deklaration und definiton der variablen in der main funktion:</p>
<pre><code class="language-cpp">//LOKALE VARIABLEN DEKLARIEREN UND DEFINIEREN
	char menue_auswahl;
	int level_auswahl = 0; 
	int levelbereich = (rand()%10)+1;
	int punkte = 0;
	int pc_highscore = 0;
</code></pre>
<p>ich denke - korrigiert mich bitte wenn ich da falsch liege - das nicht mehr benötigt wird, oder?</p>
<p>nun, er konnte zuerst nicht kompilieren, daraufhin habe ich das ganze mit reinterpret 'gecastet' (anmerkung: dieser art des castings wird in meinem buch keine zeile gewidmet, ich habe also keine ahnung, was sie wirklich bewirkt).<br />
das sah dann so aus:</p>
<pre><code class="language-cpp">punkte = spielen(levelbereich, reinterpret_cast&lt;int&gt; (levelauswahl), pc_highscore);
</code></pre>
<p>folge: kompiliervorgang erfolgreich, aber die punkte berechnung (die mit dem 2ten parameter der spielen-funktionen [levelauswahl] zusammenhaengt) funktioniert nicht mehr richtig.</p>
<p>ich hoffe, ich habe weder zuviel noch zu wenig code gepostet und mir kann recht einfach geholfen werden. danke! <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>
<p>actinium</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447626</guid><dc:creator><![CDATA[Actinium]]></dc:creator><pubDate>Fri, 01 Feb 2008 14:16:30 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast:  konvertierung von int zu int!? on Fri, 01 Feb 2008 14:26:32 GMT]]></title><description><![CDATA[<p>Klammern oder Unterstrich vergessen?</p>
<pre><code class="language-cpp">punkte = spielen(levelbereich, levelauswahl(), pc_highscore);
punkte = spielen(levelbereich, level_auswahl, pc_highscore);
</code></pre>
<p>Dass dein Buch reinterpret_cast in dieser Form nicht behandelt, spricht für das Buch. Diese Castform (Zeiger in Integer und umgekehrt) wird nur extrem selten benötigt und hat in normalem Code nichts verloren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447627</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 01 Feb 2008 14:26:32 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast:  konvertierung von int zu int!? on Fri, 01 Feb 2008 14:41:43 GMT]]></title><description><![CDATA[<p>wow! das ging fix, vielen dank, damit hat sich das bereits geklärt! <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>
<p>edit: gut, dann werd ich mal weiterlesen. danke nochmals.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447629</guid><dc:creator><![CDATA[Actinium]]></dc:creator><pubDate>Fri, 01 Feb 2008 14:41:43 GMT</pubDate></item></channel></rss>