<?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[std::function in file schreiben?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage, und zwar habe ich momentan eine Klasse welche ein physikalisches System darstellt. Dieses System ist ziemlich frei konfigurierbar was Parameter etc angeht. Allerdings kann man auch diverse interne Funktionn konfigurieren, also etwa so (nur ein Minimalbeispiel):</p>
<pre><code>class physical_system
{
	public:	
		physical_system();

		double output(double input)
		{
			return output_function(input);
		}

		void set_output_function(std::function&lt;double(double input)&gt; const &amp;new_output_function)
		{
			output_function = new_output_function;
		}

	private:
		std::function&lt;double(double input)&gt; output_function;
};
</code></pre>
<p>Allerdings will ich jetzt eine fertig konfigurierte Instanz von <code>physical_system</code> in eine Textdatei schreiben können, so dass ich sie zu einem späteren Zeitpunkt wieder laden kann.</p>
<p>Mit Parametern ist das ja kein Problem, da schreibe ich einfach deren numerischen Wert in die Textdatei. Aber wie speichere ich das std::function Objekt, welches der Benutzer übergibt, in einer Textdatei so dass ich dieses nach dem Laden wieder benutzen kann?</p>
<p>Geht das überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325689/std-function-in-file-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 21:52:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325689.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 May 2014 14:43:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 14:43:05 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage, und zwar habe ich momentan eine Klasse welche ein physikalisches System darstellt. Dieses System ist ziemlich frei konfigurierbar was Parameter etc angeht. Allerdings kann man auch diverse interne Funktionn konfigurieren, also etwa so (nur ein Minimalbeispiel):</p>
<pre><code>class physical_system
{
	public:	
		physical_system();

		double output(double input)
		{
			return output_function(input);
		}

		void set_output_function(std::function&lt;double(double input)&gt; const &amp;new_output_function)
		{
			output_function = new_output_function;
		}

	private:
		std::function&lt;double(double input)&gt; output_function;
};
</code></pre>
<p>Allerdings will ich jetzt eine fertig konfigurierte Instanz von <code>physical_system</code> in eine Textdatei schreiben können, so dass ich sie zu einem späteren Zeitpunkt wieder laden kann.</p>
<p>Mit Parametern ist das ja kein Problem, da schreibe ich einfach deren numerischen Wert in die Textdatei. Aber wie speichere ich das std::function Objekt, welches der Benutzer übergibt, in einer Textdatei so dass ich dieses nach dem Laden wieder benutzen kann?</p>
<p>Geht das überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399003</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Tue, 13 May 2014 14:43:05 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 15:13:44 GMT]]></title><description><![CDATA[<p>Mit Java.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399007</guid><dc:creator><![CDATA[proja]]></dc:creator><pubDate>Tue, 13 May 2014 15:13:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 15:17:19 GMT]]></title><description><![CDATA[<p>Nein, das geht im Allgemeinen nicht. Wie willst du eine Funktion serialisieren, die <strong>irgendwas</strong> tun kann und beliebig grossen Zustand im Rücken hat?</p>
<p>Du musst dich auf ein serialisierbares Format beschränken. Z.B. Strings, die du parst. Oder Blöcke primitiver Funktionen, die du zusammensetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399008</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 May 2014 15:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 15:30:57 GMT]]></title><description><![CDATA[<p>Der einfachere Weg wäre, dir eine map anzulegen, die Namen auf Funktionsaddressen mappt. Beim Speichern speicherst du einfach den Namen in die Datei und der kann dann beim Laden gelesen werden. Das Initialisieren der Map machst du hardcoded in irgendeiner Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399010</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Tue, 13 May 2014 15:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 15:50:10 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Das Initialisieren der Map machst du hardcoded in irgendeiner Funktion.</p>
</blockquote>
<p>Das Problem ist folgendes: Wären es alles Funktionszeiger, hätte er nicht <code>std::function</code> als Membertyp gewählt. Also dürften es auch Funktoren geben. Und die haben, wie Nexus bereits erwähnt hat, einen Zustand, und den müsste man ebenfalls Serialisieren - nur kann man nicht auf das Objekt zugreifen, dass function hält. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p>Was also wird an <code>set_output_function</code> übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399012</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 13 May 2014 15:50:10 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 15:51:42 GMT]]></title><description><![CDATA[<p>Wenn du so etwas machen möchtest, ist <code>function</code> die falsche Wahl. Du musst wohl selbst eine Schnittstelle für serialisierbare Funktionen so definieren, wie du sie brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399013</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Tue, 13 May 2014 15:51:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 16:39:17 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nein, das geht im Allgemeinen nicht. Wie willst du eine Funktion serialisieren, die <strong>irgendwas</strong> tun kann und beliebig grossen Zustand im Rücken hat?</p>
</blockquote>
<p>Verdammt, das hatte ich befürchtet...</p>
<p>Das Problem das ich jetzt habe ist, dass ich nicht einfach nem Kollegen die Textdatei schicken kann und der lädt das physikalische System bei sich und verwendet es direkt (für Simulationen etc.), sondern dass er auch noch alle Funktionen korrekt setzen muss, tatsächlich hat das System nämlich nicht nur ein <code>std::function</code> Objekt sondern einen (nicht gerade kleinen) <code>vector</code> aus den Funktionen die intern verwendet werden... Das wäre dann der Konfigurationshorror und sehr Fehleranfällig.</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Was also wird an <code>set_output_function</code> übergeben?</p>
</blockquote>
<p>Ja, also prinzipiell alles was sich mit der Signatur der std::function callen lässt, also was ein double als Parameter nimmt und einen double Wert zurückgibt... Also auch Funktoren, ja.</p>
<p>TyRoXx schrieb:</p>
<blockquote>
<p>Wenn du so etwas machen möchtest, ist <code>function</code> die falsche Wahl. Du musst wohl selbst eine Schnittstelle für serialisierbare Funktionen so definieren, wie du sie brauchst.</p>
</blockquote>
<p>Aber wie könnte sowas aussehen? Wenn derjenige der das System erstellt zum Beispiel folgende Funktion übergeben will:</p>
<pre><code>double my_output_function(double input)
{
	return sin(input)*sin(input);
}
</code></pre>
<p>wie kann man sowas serialisieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399017</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Tue, 13 May 2014 16:39:17 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 16:50:19 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>wie kann man sowas serialisieren?</p>
</blockquote>
<p>Wie gesagt, z.B. als String</p>
<pre><code>f(x)=sin(x)*sin(x)
</code></pre>
<p>wobei du einen Parser brauchst. Aber das ist wohl die benutzerfreundlichste Methode.</p>
<p>Alternativ serialisierst du direkt einen Syntaxbaum wie</p>
<pre><code>f(x)=
* multiply
  * sin
    * x
  * sin
    * x
</code></pre>
<p>In beiden Fällen musst du eine endliche Anzahl Funktionen zuvor definieren.</p>
<p>Was dir enorm Arbeit abnehmen könnte, wäre eine Skriptsprache wie Lua. Du würdest dann die Funktionen extern im Skript definieren und bräuchtest zu C++ nur eine Schnittstelle <code>double function(double)</code> , z.B. mittels LuaBridge.</p>
<p>Willst du durch das Lesen von Dateien neue, zuvor unbekannte Funktionen ausführen können? Oder sollen lediglich bereits kompilierte Funktionen ausgewählt werden? Im zweiten Fall würde eine Map Label-&gt;Function wie von Nathan vorgeschlagen tatsächlich helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399018</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 May 2014 16:50:19 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 16:59:21 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>happystudent schrieb:</p>
<blockquote>
<p>wie kann man sowas serialisieren?</p>
</blockquote>
<p>Wie gesagt, z.B. als String</p>
<pre><code>f(x)=sin(x)*sin(x)
</code></pre>
<p>wobei du einen Parser brauchst.</p>
</blockquote>
<p>Hm, das werde ich so nicht machen können, da Performance sehr wichtig bei der Anwendung ist (die Funktionen werden etliche male aufgerufen) was jetzt schon an der Grenze zur Echtzeitsfähigkeit ist, wenn ich da bei jedem call erstmal parsen muss wird das glaub ich nix...</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Willst du durch das Lesen von Dateien neue, zuvor unbekannte Funktionen ausführen können? Oder sollen lediglich bereits kompilierte Funktionen ausgewählt werden? Im zweiten Fall würde eine Map Label-&gt;Function wie von Nathan vorgeschlagen tatsächlich helfen.</p>
</blockquote>
<p>Also am liebsten wären mir auch unbekannte Funktionen, aber das wird denke ich zu aufwendig, daher werde ich wohl die Methode mit der map nehmen.</p>
<p>Danke auf jeden Fall für die Vorschläge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399019</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Tue, 13 May 2014 16:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 17:16:26 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>happystudent schrieb:</p>
<blockquote>
<p>wie kann man sowas serialisieren?</p>
</blockquote>
<p>Wie gesagt, z.B. als String</p>
<pre><code>f(x)=sin(x)*sin(x)
</code></pre>
<p>wobei du einen Parser brauchst.</p>
</blockquote>
<p>Hm, das werde ich so nicht machen können, da Performance sehr wichtig bei der Anwendung ist (die Funktionen werden etliche male aufgerufen) was jetzt schon an der Grenze zur Echtzeitsfähigkeit ist, wenn ich da bei jedem call erstmal parsen muss wird das glaub ich nix...</p>
</blockquote>
<p>Das bedeutet im Umkehrschluss, du liest im Moment aus eienr Datei ein und willst es sofort ausführen?!</p>
<p>Das bisschen Parsen macht die Performance dann nicht mehr schelchter neben der Dateioperation.</p>
<p>Aber was du wahrscheinlich eher machst, ist die Datei einlesen, alles speichern wie du es brauchst und dann damit arbeiten. Das Laden ist gewöhnlich nicht wirklich zeitkritisch, da kannst du auch so etwas parsen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399023</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 13 May 2014 17:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 18:01:30 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>wenn ich da bei jedem call erstmal parsen muss wird das glaub ich nix...</p>
</blockquote>
<p>Natürlich nicht bei jedem Aufruf, das Parsen machst du genau einmal beim Laden. Dann speicherst du die Funktion in einer effizienteren Datenstruktur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399028</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 May 2014 18:01:30 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 18:11:48 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Dann speicherst du die Funktion in einer effizienteren Datenstruktur.</p>
</blockquote>
<pre><code>//              Funktion
//                 |
//                 v
std::vector&lt;std::string&gt; functions;
//     ^                     ^
//     |                     |
// effiziente Datenstruktur  |
//                           |
//                       speichern
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2399030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399030</guid><dc:creator><![CDATA[illustriert]]></dc:creator><pubDate>Tue, 13 May 2014 18:11:48 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 20:18:32 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/30076">@happystudent</a><br />
Könntest du vielleicht, statt aus einem Datenfile direkt ein &quot;Physical System&quot; im Speicher zu bauen, aus dem Datenfile C++ Code (*) generieren, diesen kompilieren, und dann ausführen?<br />
Wenn's nicht stört dass es ein eigener Prozess ist, ist das ja denkbar einfach. Und wenn das stört gibt's immer noch die Möglichkeit ne .DLL bzw .SO zu verwenden.</p>
<p>Oder du begibst dich auf die Suche nach einer Library mit der man solche Funktionen JIT kompilieren kann.</p>
<p>*: Bzw. muss es natürlich nicht C++ sein. Ich sag nur C++ weil ich annehme dass du vielleicht keine Lust hast den ganzen restlichen Code des &quot;Physical System&quot; in einer anderen Sprache nochmal neu zu implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399058</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 13 May 2014 20:18:32 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Tue, 13 May 2014 21:54:08 GMT]]></title><description><![CDATA[<p>Nimm einfach Lua + LuaJit.<br />
LuaJit ist so effizient dass es Lua-Code relativ nah an die Performance von C annähert.<br />
<a href="http://luajit.org/performance_x86.html" rel="nofollow">http://luajit.org/performance_x86.html</a></p>
<p>Da schreibst du die Funktionen als Lua-Code in eine Textdatei die du zur Laufzeit lädst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399074</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Tue, 13 May 2014 21:54:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Wed, 14 May 2014 09:59:12 GMT]]></title><description><![CDATA[<p>illustriert schrieb:</p>
<blockquote>
<pre><code>//              Funktion
//                 |
//                 v
std::vector&lt;std::string&gt; functions;
//     ^                     ^
//     |                     |
// effiziente Datenstruktur  |
//                           |
//                       speichern
</code></pre>
</blockquote>
<p>Versteh ich nicht, sorry. Über einen string muss ich ja immernoch drüber iterieren. Wenn ich jetzt etwas wie <code>&quot;sin(x)*sin(x)&quot;</code> in meinem funktions-vector habe muss ich ja trotzdem bei jedem function-call über den string laufen. Das ist ja auf jeden Fall zig mal teurer als einfach nur <code>sin(x)*sin(x)</code> auszurechnen...</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/30076">@happystudent</a><br />
Könntest du vielleicht, statt aus einem Datenfile direkt ein &quot;Physical System&quot; im Speicher zu bauen, aus dem Datenfile C++ Code (*) generieren, diesen kompilieren, und dann ausführen?<br />
Wenn's nicht stört dass es ein eigener Prozess ist, ist das ja denkbar einfach. Und wenn das stört gibt's immer noch die Möglichkeit ne .DLL bzw .SO zu verwenden.</p>
<p>Oder du begibst dich auf die Suche nach einer Library mit der man solche Funktionen JIT kompilieren kann.</p>
</blockquote>
<p>Das wär natürlich cool... hab sowas zwar noch nie gemacht, aber werd mal danach googlen.</p>
<p>Ethon schrieb:</p>
<blockquote>
<p>Nimm einfach Lua + LuaJit.<br />
LuaJit ist so effizient dass es Lua-Code relativ nah an die Performance von C annähert.<br />
<a href="http://luajit.org/performance_x86.html" rel="nofollow">http://luajit.org/performance_x86.html</a></p>
<p>Da schreibst du die Funktionen als Lua-Code in eine Textdatei die du zur Laufzeit lädst.</p>
</blockquote>
<p>Hm, ich seh da aber keinen Vergleich zu C, sondern nur zu verschiedenen Lua VMs... Diese Funktionsaufrufe sind Performancetechnisch der Begrenzende Faktor des Ganzen Systems, daher will ich durch die Serialisierung eigentlich <em>gar keine</em> Performance verlieren müssen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399114</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Wed, 14 May 2014 09:59:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Wed, 14 May 2014 10:22:21 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>Versteh ich nicht, sorry</p>
</blockquote>
<p>War wohl auch nicht allzu ernst gemeint.</p>
<p>Was ich mit Datenstruktur meinte, war eher ein Syntaxbaum oder eine effizientere, auf spezifische Funktionen optimierte Variante davon. Aber an die Performance eines kompilierten oder JIT-interpretieren Programmes wirst du damit nicht herankommen.</p>
<p>Ein C++-Programm automatisch zu kompilieren dürfte nicht allzu schwer sein; die Zielmaschine muss halt einen Compiler installiert haben (ausser du willst den auch noch mitliefern). Du kannst vorgeben, dass gewisse Funktionen in der einzulesenden .cpp-Datei vorhanden sein müssen. Entweder du kompilierst sie direkt mit dem Rest deines Programms, oder machst eine Art Plugin-System wie von hustbaer erwähnt: Du spezifizierst eine Schnittstelle in einer dynamischen Bibliothek (.dll, .so), welche vom Hauptprojekt aufgerufen werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399118</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 14 May 2014 10:22:21 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Wed, 14 May 2014 10:26:41 GMT]]></title><description><![CDATA[<p>Ok, alles klar dann werd ich mich dies bezüglich mal informieren wie das geht. Dass ein Compiler Vorhanden sein muss macht nichts, das ist auf jeden Fall gegeben.</p>
<p>Viele Grüße,<br />
hs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399120</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Wed, 14 May 2014 10:26:41 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Wed, 14 May 2014 10:46:20 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>Hm, ich seh da aber keinen Vergleich zu C, sondern nur zu verschiedenen Lua VMs... Diese Funktionsaufrufe sind Performancetechnisch der Begrenzende Faktor des Ganzen Systems, daher will ich durch die Serialisierung eigentlich <em>gar keine</em> Performance verlieren müssen...</p>
</blockquote>
<p>Weil du keine Funktionen serialisieren kannst.<br />
Die einzige Möglichkeit wäre ein JIT-Compiler, dh. dein Programm schleppt einen kompletten C++-Compiler mit der die Möglichkeit bietet seinen Code direkt in den Speicher zu spucken. Clang kann das meines Wissens nach als einziger da die LLVM Support für JIT-Kompilierung hat.<br />
Das ist aber sowas von krass übertrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399127</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Wed, 14 May 2014 10:46:20 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Wed, 14 May 2014 11:06:49 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>Ok, alles klar dann werd ich mich dies bezüglich mal informieren wie das geht. Dass ein Compiler Vorhanden sein muss macht nichts, das ist auf jeden Fall gegeben.</p>
</blockquote>
<p>Warum schreibt der Kollege den Kram dann nicht direkt selbst in C++? Wozu der Umweg über irgendwelche &quot;Serialisierung&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399132</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Wed, 14 May 2014 11:06:49 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Wed, 14 May 2014 11:52:43 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Warum schreibt der Kollege den Kram dann nicht direkt selbst in C++? Wozu der Umweg über irgendwelche &quot;Serialisierung&quot;?</p>
</blockquote>
<p>So wie ich happystudent verstanden habe, will er möglichst einfach diese Funktionen verschicken können, und idealerweise auch möglichst automatisch (d.h. der Kollege muss nicht jedes Mal manuell kompilieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399135</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 14 May 2014 11:52:43 GMT</pubDate></item><item><title><![CDATA[Reply to std::function in file schreiben? on Wed, 14 May 2014 12:23:26 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Warum schreibt der Kollege den Kram dann nicht direkt selbst in C++? Wozu der Umweg über irgendwelche &quot;Serialisierung&quot;?</p>
</blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>So wie ich happystudent verstanden habe, will er möglichst einfach diese Funktionen verschicken können, und idealerweise auch möglichst automatisch (d.h. der Kollege muss nicht jedes Mal manuell kompilieren).</p>
</blockquote>
<p>Genau.</p>
<p>Also wenn du beispielsweise ein Polynom durch Messwerte fitten willst, dann bestimmst du ja mit irgendeinem Algorithmus die Koeffizienten dieses Polynoms. Diese Koeffizienten kann man dann ja in einer Textdatei speichern. Wenn jemand anders dann auch dieses Polynom (weiter)-verwenden will, kann er das mit der entsprechenden Textdatei einfach so machen:</p>
<pre><code>polynom p = polynom::read_from_file(&quot;C:\\poly_coefficients.txt&quot;);
</code></pre>
<p>Dafür braucht er dann nur die Textdatei und die entsprechende polynom Klasse.</p>
<p>Natürlich könnte er die Koeffizienten auch manuell abschreiben, was aber bei vielen Koeffizienten mühsam und fehleranfällig ist. Daher macht es Sinn sich dafür nen kleinen Parser zu schreiben.</p>
<p>Das Gleiche brauche ich jetzt auch, nur dass meine &quot;Koeffizienten&quot; keine numerischen Werte mehr sind, sondern <em>Funktionen</em>. Deswegen würde ich das gerne so machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2399143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2399143</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Wed, 14 May 2014 12:23:26 GMT</pubDate></item></channel></rss>