<?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[Array von Funktionen]]></title><description><![CDATA[<p>Hallo</p>
<p>Ist es möglich ein Array von Funktionen zu definieren? In der Art wie:</p>
<pre><code class="language-cpp">float Funktion[13](Parameter);
</code></pre>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/114034/array-von-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 19:57:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/114034.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Jun 2005 13:44:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 13:44:37 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ist es möglich ein Array von Funktionen zu definieren? In der Art wie:</p>
<pre><code class="language-cpp">float Funktion[13](Parameter);
</code></pre>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819818</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jun 2005 13:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 13:49:18 GMT]]></title><description><![CDATA[<p>Was hast du vor? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/819822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819822</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Wed, 29 Jun 2005 13:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 13:54:40 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein sehr simples Kniffelspiel programmiert und es wäre hilfreich, weil übersichtlich, wenn ich viele Funktionen so zusammenfassen könnte und dann nur noch einen Parameter übergebn muss, den ich in den Funktionsaufruf einsetze. Es geht natürlich auch anders, dann aber mit einer nicht so schönen switch-Anweisung.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819825</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jun 2005 13:54:40 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 13:56:44 GMT]]></title><description><![CDATA[<p>chrische5 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">float Funktion[13](Parameter);
</code></pre>
<p>chrische</p>
</blockquote>
<p>Kann es sein, dass Du ein Array als Parameter an eine Funktion übergeben willst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819830</guid><dc:creator><![CDATA[LunaGirl]]></dc:creator><pubDate>Wed, 29 Jun 2005 13:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 14:00:30 GMT]]></title><description><![CDATA[<p>chrische5 schrieb:</p>
<blockquote>
<p>... und es wäre hilfreich, weil übersichtlich, wenn ich viele Funktionen so zusammenfassen könnte und dann nur noch einen Parameter ...</p>
</blockquote>
<p>Das wäre überhaupt nicht übersichtlich!</p>
<p>Aha, Du will in der Tat Funktionen in ein Array schreiben und die Funktion über den Laufparameter des Arrays ansprechen. Ich glaube da nicht daran, dass das funktionieren wird/kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819836</guid><dc:creator><![CDATA[LunaGirl]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 14:01:41 GMT]]></title><description><![CDATA[<p>Nein. Das ist kein Problem. Ich habe eine Funktion an die ich eine Parameter übergeb. Mit diesem mache ich dann diverse Berechnungen und am Ende würde ich gerne eine Funktion in Abhängigkeit von diesem Parameter aufrufen. Ich konnte also eine switch-Anweisung machen und alle möglichen Zustände vom Parameter überprüfen, da es aber 13 sein können finde ich das nicht sehr attraktiv. Also dachte ich mir, dass ich ja eine Funktionsarray aufrufe könnte, in dem ich den Parameter im Namen angebe. Also genauso, wie ich ein normales array benutze. Ich wollte nur wissen, ob so was möglich ist und wenn wie.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819837</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 14:04:13 GMT]]></title><description><![CDATA[<p>Meinst du vielleicht sowas ?</p>
<pre><code class="language-cpp">typedef float (*myfunc)( int param1, int param2 );

float testfunc1( int param1, int param2 )
{
	return 1.0;
}

float testfunc2( int param1, int param2 )
{
	return 2.0;
}

float testfunc3( int param1, int param2 )
{
	return 3.0;
}

myfunc	array_of_functions[3] = { testfunc1, testfunc2, testfunc3 };

int main(int argc, char* argv[])
{
	for ( int i=0; i&lt;3; i++ )
	{
		float result = array_of_functions[i]( 0,0 );
		printf( &quot;%f&quot;, result );
	}

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/819841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819841</guid><dc:creator><![CDATA[tvdog]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 14:06:51 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das schaut sehr gut aus. Ich werde es mal probieren und mich bei eventuellen Probelem wieder melden. Vielen Dank für Eure schnelle Hilfe.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819843</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:06:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 14:43:02 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>chrische5 schrieb:</p>
<blockquote>
<p>... und es wäre hilfreich, weil übersichtlich, wenn ich viele Funktionen so zusammenfassen könnte und dann nur noch einen Parameter ...</p>
</blockquote>
<p>Das wäre überhaupt nicht übersichtlich!</p>
</blockquote>
<p>Ob es übersichtlich ist oder nicht sollte doch nun wirklich derjenige entscheiden, der sein Programm kennt.</p>
<p>Ich habe es leider nicht richtig hinbekommen. Ich arbeite an einer Dialogfeldbasierten Anwendung und habe versucht in der *.cpp Datei meiner eigenen CCheckBedingung-Klasse alles zu zu schreiben, wie es vorgeschlagen wurde:</p>
<pre><code class="language-cpp">typedef int(*myFunctions) (CWuerfel arWuerfel[]);
</code></pre>
<p>Das ganz oben und dann die Funktionen. Am Ende steht:</p>
<pre><code class="language-cpp">myFunctions aCheckFunctions[13]={CCheckBedingung::CheckEinsen,CCheckBedingung::CheckZweien,CCheckBedingung::CheckDreien,CCheckBedingung::CheckVieren,CCheckBedingung::CheckFuenfen,CCheckBedingung::CheckSechsen,CCheckBedingung::CheckDreierPasch,CCheckBedingung::CheckViererPasch,CCheckBedingung::CheckFullHouse,CCheckBedingung::CheckKleineStrasse,CCheckBedingung::CheckGrosseStrasse,CCheckBedingung::CheckChance,CCheckBedingung::CheckKniffel};
</code></pre>
<p>Ist leider etwas lang geworden, aber es sind nun mal 13 Funktionen.</p>
<p>Nun bekomme ich folgende Fehlermeldungen(es sind genau 13):</p>
<p>d:\Visual Studio Projekte\Kniffel\CheckBedingung.cpp(293): error C2440: 'initializing' : cannot convert from 'int (__thiscall CCheckBedingung::* )(CWuerfel [])' to 'myFunctions'</p>
<p>Wo liegt mein Fehler? Muss ich noch in der *.h -Datei rumschreiben?</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819874</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:43:02 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 14:46:00 GMT]]></title><description><![CDATA[<p>Klingt mir eher nach einem Fehler im Design *grumpf* <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>Poste doch mal die Funktionsrümpfe deiner einzelnen Check-Funktionen, dann wird sich schon eine Möglichkeit zeigen, das alles etwas eleganter zu lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819878</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:46:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 14:48:15 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich weiss leider nicht genau, was der Funktionsrumpf ist, baer ich poste mal das hier:</p>
<pre><code class="language-cpp">int CCheckBedingung::CheckEinsen(CWuerfel arWuerfel[])
{
	//int Variable für die Gesamtpunktzahl 
	int iSummeEinsen=0;
	//Schleife für alle fünf Würfel
	for(int i=0;i&lt;5;i++)
		//wenn Würfelzustand =1 oder Würfelzustand =7 (1, aber gesetzt) wird Summe um eins erhöht
		if((arWuerfel[i].m_iCheckZustand==1) || (arWuerfel[i].m_iCheckZustand==7))
			iSummeEinsen+=1;
	//Summe wird zurückgegeben
	return iSummeEinsen;
}
</code></pre>
<p>Natürlich ist das nicht bei jeder Funktion genau dasselbe.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819883</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 14:55:54 GMT]]></title><description><![CDATA[<p>Und dein Ziel ist, die Punkte eines einzelnen Wurfes zu ermitteln oder verfolgst du noch weitere Ziele?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819893</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 15:04:00 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Mein Ziel ist es, dass wenn jemand dreimal gewürfelt hat und sich dann entschieden hat, welches Feld er belgen möchte (eonsen, DreierPasch, Kniffel, Kleine Strasse,...) die dazugehörige Funktion aufgerufen wird. Ich würde also gerne einer Funktion einen int-Parameter übergeben, in dem steht, welches Feld geklickt wurde und dann die Funktion aufrufen. Da wäre es natürlich praktisch keine switch-Anweisung zu schreiben, sondern nur den Funktionsnamen und den Parameter anzugeben.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819902</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jun 2005 15:04:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 15:07:44 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=275" rel="nofollow">Unix-Tom</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=1" rel="nofollow">MFC (Visual C++)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/819904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819904</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 29 Jun 2005 15:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 19:54:47 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist leider etwas lang geworden, aber es sind nun mal 13 Funktionen.</p>
<p>Nun bekomme ich folgende Fehlermeldungen(es sind genau 13):</p>
<p>d:\Visual Studio Projekte\Kniffel\CheckBedingung.cpp(293): error C2440: 'initializing' : cannot convert from 'int (__thiscall CCheckBedingung::* )(CWuerfel [])' to 'myFunctions'</p>
</blockquote>
<p>Die Compilermeldung kommt daher, dass deine Methoden einen this-Pointer benötigen, der bei dieser Art des Funktionsaufrufes nicht zur Verfügung steht.</p>
<p>Wenn deine Methoden in der Klasse CCheckBedingung keinen Zugriff auf Variablen der Klasse benötigen, kannst du diese ja auch static deklarieren.</p>
<p>Dann funktionierts auch mit dem Funktionspointerarray.</p>
<pre><code class="language-cpp">typedef int (*FUNCTIONPOINTER)(CWuerfel*);

class MyClass
{
public:
	MyClass();

	static int testfunc1(CWuerfel*) { return 1; }
	static int testfunc2(CWuerfel*) { return 2; }
	static int testfunc3(CWuerfel*) { return 3; }
};

FUNCTIONPOINTER funcpointerarray[3] = { MyClass::testfunc1, MyClass::testfunc2, MyClass::testfunc3 };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/820111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820111</guid><dc:creator><![CDATA[tvdog]]></dc:creator><pubDate>Wed, 29 Jun 2005 19:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 21:26:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe das jetzt mal probiert, obwohl ich ehrlich gesagt nicht genau weiss, was es bedeutet einen Funktion als static zu deklarieren (vielleicht kannst du mir da mal auf die Sprünge helfen) Mein code schaut jetzt folgendermaßen aus:</p>
<pre><code class="language-cpp">#pragma once
#include &quot;Wuerfel.h&quot;

typedef int(*myFunctions) (CWuerfel arWuerfel[]);

class CCheckBedingung
{
public:
	CCheckBedingung(void);
	~CCheckBedingung(void);
	// Checkt, ob 1en schon belegt wurden
	static void Sortieren(CWuerfel arWuerfel[]);
	//macht aus doppelten Augenzahlen eine Null
	static void DoppelteLoeschen(CWuerfel arWuerfel[]);
	// Checkt, wieviel Punkte man bekommt, wenn man auf Einsen klickt

	static int CheckEinsen(CWuerfel arWuerfel[]);
	// Checkt, wieviel Punkte man bekommt, wenn man auf Zweien klickt
	static int CheckZweien(CWuerfel arWuerfel[]);
	// Checkt, wieviel Punkte man bekommt, wenn man auf Dreien klickt
	static int CheckDreien(CWuerfel arWuerfel[]);
	// Checkt, wieviel Punkte man bekommt, wenn man auf Vieren klickt
	static int CheckVieren(CWuerfel arWuerfel[]);
	// Checkt, weiviel Punkte man bekommt, wenn man auf Fünfen klickt
	static int CheckFuenfen(CWuerfel arWuerfel[]);
	// Checkt, weiviel Punkte man bekommt, wenn man auf Sechsen klickt
	static int CheckSechsen(CWuerfel arWuerfel[]);
	//Checkt, wieviel Punkte man bekommt, wenn man auf DreierPasch klickt
	static int CheckDreierPasch(CWuerfel arWuerfel[]);
	//Checkt, wieviel Punkte man bekommt, wenn man auf ViererPasch klickt
	static int CheckViererPasch(CWuerfel arWuerfel[]);
	//Checkt wieviel Punkte man bekommt, wenn man auf Full House klickt
	static int CheckFullHouse(CWuerfel arWuerfel[]);
	//Checkt, wieviel Punkte man bekommt, wenn man auf Kleine Strasse klickt
	static int CheckKleineStrasse(CWuerfel arWuerfel[]);
	//Checkt, wieviel Punkt man bekommt, wenn man auf grosse Strasse klickt
	static int CheckGrosseStrasse(CWuerfel arWuerfel[]);
	//Checkt, wieviel Punkte man bekommt, wenn man auf Kniffel drückt 
	static int CheckKniffel(CWuerfel arWuerfel[]);
	//Checkt, wieviel Punkte man bekommt, wenn man auf Chance klickt
	static int CheckChance(CWuerfel arWuerfel[]);

	bool m_abIsChecked[13];

};

myFunctions aCheckFunctions[13]={CCheckBedingung::CheckEinsen,CCheckBedingung::CheckZweien,CCheckBedingung::CheckDreien,CCheckBedingung::CheckVieren,CCheckBedingung::CheckFuenfen,CCheckBedingung::CheckSechsen,CCheckBedingung::CheckDreierPasch,CCheckBedingung::CheckViererPasch,CCheckBedingung::CheckFullHouse,CCheckBedingung::CheckKleineStrasse,CCheckBedingung::CheckGrosseStrasse,CCheckBedingung::CheckChance,CCheckBedingung::CheckKniffel};
</code></pre>
<p>Leider bekomm ich jetzt eine neue Fehlermeldung aus der ich ebenfalls nicht schlau werde:</p>
<blockquote>
<p>Kniffel error LNK2005: &quot;int (__cdecl** aCheckFunctions)(class CWuerfel * const)&quot; (?aCheckFunctions@@3PAP6AHQAVCWuerfel@@@ZA) already defined in CheckBedingung.obj</p>
</blockquote>
<p>gefolgt von:</p>
<blockquote>
<p>Kniffel fatal error LNK1169: one or more multiply defined symbols found</p>
</blockquote>
<p>Vieleicht wisst ihr ja, was er will.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/820183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820183</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Jun 2005 21:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Wed, 29 Jun 2005 22:11:30 GMT]]></title><description><![CDATA[<blockquote>
<p>Kniffel error LNK2005: &quot;int (__cdecl** aCheckFunctions)(class CWuerfel * const)&quot; (?aCheckFunctions@@3PAP6AHQAVCWuerfel@@@ZA) already defined in CheckBedingung.obj</p>
</blockquote>
<p>Liegt daran, dass du das Array in der Headerdatei definierst.</p>
<p>Jedesmal wenn du dann die Datei CheckBedingung.h in eine cpp includierst wird ein neues Array vom Compiler mit gleichem Namen angelegt. Das mag der Linker gar nicht, da er ja nicht weiss welches Objekt nun unter dem Namen angesprochen wird =&gt; Fehler ... already defined in ...</p>
<p>Lösung:</p>
<p>Pack die Zeile</p>
<pre><code class="language-cpp">myFunctions aCheckFunctions[13]={CCheckBedingung::Check...};
</code></pre>
<p>in die cpp-Datei CheckBedingung.cpp.</p>
<p>Falls du aus anderen Files auch auf das Array zugreifen musst, deklariere das Array als extern im Headerfile CheckBedingung.h:</p>
<pre><code class="language-cpp">extern myFunctions aCheckFunctions[];
</code></pre>
<p>Ich hoffe das hilft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/820206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820206</guid><dc:creator><![CDATA[tvdog]]></dc:creator><pubDate>Wed, 29 Jun 2005 22:11:30 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Thu, 30 Jun 2005 05:41:28 GMT]]></title><description><![CDATA[<p>man kann für headerdateien auch die Übliche Vorgehensweise wählen und sie nur bedingt kompilieren, wenn sie noch nicht kompiliert worden sind:</p>
<pre><code class="language-cpp">#ifndef MYHEADER_H
#define MYHEADER_H

//dieser Teil wird vom Compiler nur einmal gelesen, 
//beim zweiten mal ist MYHEADER_H bereits definiert und
//der Präprozessor entfernt den Code vorm kompilieren
//natürlich sollte das definierte Symbol immer unterschiedlich sein

#endif
</code></pre>
<p>Damit werden mehrfache definitionen durch mehrfache Einbindung von Headern unmöglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/820271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820271</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 30 Jun 2005 05:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Thu, 30 Jun 2005 08:31:03 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>: Includeguards helfen in diesem fall nicht.</p>
<blockquote>
<p>Damit werden mehrfache definitionen durch mehrfache Einbindung von Headern unmöglich.</p>
</blockquote>
<p>sollte eigentlich heissen :<br />
Damit werden mehrfache definitionen durch mehrfache Einbindung von Headern <strong>in einer kompilationseinheit</strong> (sagt man das so ?) unmöglich.<br />
Das problem hier ist aber das der gleiche Header in verschiedenen kompilationseinheiten eingebunden wird, daher befindet sich die variable dann in mehreren .obj-files und das mag der linker nicht.<br />
Wie tvdog schon gesagt hat extern ist die lösung.<br />
BTW Includeguards verhindern compilerfehler, extern verhindert linkerfehler.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/820376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820376</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Thu, 30 Jun 2005 08:31:03 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Fri, 01 Jul 2005 08:58:55 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe die typedef-Anweisung und die Array Deklaration in die *.h-Datei geschrieben und in der *.cpp-Datei steht der Rest:</p>
<p>*h-Datei:</p>
<pre><code class="language-cpp">typedef int(*myFunctions) (CWuerfel arWuerfel[]);
myFunctions aCheckFunctions[13];
</code></pre>
<p>*.cpp-Datei:</p>
<pre><code class="language-cpp">myFunctions aCheckFunctions[13]={CCheckBedingung::CheckEinsen,CCheckBedingung::CheckZweien,CCheckBedingung::CheckDreien,CCheckBedingung::CheckVieren,CCheckBedingung::CheckFuenfen,CCheckBedingung::CheckSechsen,CCheckBedingung::CheckDreierPasch,CCheckBedingung::CheckViererPasch,CCheckBedingung::CheckFullHouse,CCheckBedingung::CheckKleineStrasse,CCheckBedingung::CheckGrosseStrasse,CCheckBedingung::CheckChance,CCheckBedingung::CheckKniffel};
</code></pre>
<p>In meiner Funktion rufe ich jetzt mit einen Feldparameter die gewünschte Funktion auf und bekomme dabei leider immer eine Fehlermeldung. Hier erstmal der Aufruf der Funktion:</p>
<pre><code class="language-cpp">int CKniffelDlg::DoClicked(int Feld)
{
	//wenn Einsen bereits belegt sind, erscheint MessageBox mit Meldung
	if(m_cCheckBedingung.m_abIsChecked[Feld])
		MessageBox(&quot;Sie haben dieses Feld bereits belegt&quot;);
	//ansonsten werden die Punkte ausgegeben, Belegt-Varible auf true gesetzt und alle Würfel neu gewürfelt 
	else
	{
		//Aufruf der Funktion CheckEinsen aus der Klasse CCheckBedingung, in der ermittelt wird, wie hoch die
		//Punktzahl beim Einserfeld ist und Zuweisung zur Variablen von IDC_STATICAUSGABEEINSEN
		m_aiAusgabe[Feld]=m_cCheckBedingung.aCheckFunctions[Feld](arWuerfel);
</code></pre>
<p>Das ist nicht die ganze Funktion, aber der wichtige Aufruf steht in der letzten Zeile. Wenn ich nun auf einen Button klicke und die Funktion DoClicked aufgerufen wird, bekomme ich die Fehlermeldung:</p>
<blockquote>
<p>Unhandled exception at 0xcccccccc in Kniffel.exe: 0xC0000005: Access violation reading location 0xcccccccc.</p>
</blockquote>
<p>Vielleicht wisst Ihr ja Hilfe, da Ihr bis jetzt ja immer Bescheid wusstet.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/821256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/821256</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 01 Jul 2005 08:58:55 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Sun, 03 Jul 2005 17:20:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Weiss keiner, was hier los sein könnte?</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/822897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/822897</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 03 Jul 2005 17:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Sun, 03 Jul 2005 17:40:17 GMT]]></title><description><![CDATA[<p>Vielleicht ist Feld kein gültiger Index für aCheckFunctions.</p>
<p>BTW: Das mit den static-Funktionen solltest du wieder rückgängig machen und stattdessen einen <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39450.html" rel="nofollow">Funktionspointer auf ein Klassenelement</a> benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/822910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/822910</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 03 Jul 2005 17:40:17 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Sun, 03 Jul 2005 19:26:21 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>&quot;Feld&quot; ist ein gültiger Index, da ich 0 übergebe und das Array 13 Plätze hat (von 0-12) Warum ist das mit static ungünstig? Ich habe wie gesagt noch gar nicht richtig verstanden, was static eigentlich bringt.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/823010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/823010</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 03 Jul 2005 19:26:21 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Sun, 03 Jul 2005 19:28:51 GMT]]></title><description><![CDATA[<p>Eine statische Methode hat keinen this-Pointer, d.h. alle Instanzen der Klassen teilen sich die Methode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/823015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/823015</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Sun, 03 Jul 2005 19:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Sun, 03 Jul 2005 19:32:47 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>In Ordnung und warum ist das in meinem Fall schlecht. Hilft mir das bei der Fehlersuche.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/823020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/823020</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 03 Jul 2005 19:32:47 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Funktionen on Sun, 03 Jul 2005 19:47:32 GMT]]></title><description><![CDATA[<p>static-Funktionen kann man immer ohne eine einzige Instanz einer Klasse ausführen. Das macht aber bei deinen Funktionen keinen Sinn, weshalb man sie nicht statisch macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/823032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/823032</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 03 Jul 2005 19:47:32 GMT</pubDate></item></channel></rss>