<?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[problem bei globalem initialisieren]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe wieder eine Frage, diesmal designtechnischer Natur. Ich habe eine DLL in der ich in diversen Klassen Funktionen habe und diese in einer Registerklasse registrieren möchte. Das sollte möglichst automatisch geschehen, funktioniert aber nicht, da vermutlich einige Objekte noch nicht intialisiert wurden. (Ich bekomme immer einen Zugriffsfehler)</p>
<p>Das Ganze ist so aufgebaut, dass ich probiert habe mithilfe dieses Templates</p>
<pre><code>#define globalCtor(T) global_ctor&lt;T&gt; static##T;

	template&lt;typename T&gt;
	class extx global_ctor
	{
		public:
			global_ctor() { T::_init(); }
			//~global_ctor() { Class::_uninit(); }
	};
</code></pre>
<p>die _ini() Funktion aufzurufen und darin dann die statische map der Registerklasse klasse gefüllt habe.</p>
<pre><code>Registry::registerA[&quot;test&quot;] = &amp;gx::Test;
</code></pre>
<p>An dieser Stelle gab es eine Zugriffsverletzung weil die Registry-Klasse vermutlich noch nicht erzeugt oder die Member im Speicher abgelegt waren.<br />
Das Ganze soll für mehrere Klassen dienen, die sich bzw. ihre Member bei der<br />
Registry anmelden sollen. Der manuelle aufruf bei Programmstart funktioniert übrigens, das heißt es liegt nicht an der Zuweisung an sich.</p>
<p>Jemand eine Idee wie man das anders (aber prinzipiell gleich) lösen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311883/problem-bei-globalem-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 07:25:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311883.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Dec 2012 13:56:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem bei globalem initialisieren on Mon, 17 Dec 2012 13:56:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe wieder eine Frage, diesmal designtechnischer Natur. Ich habe eine DLL in der ich in diversen Klassen Funktionen habe und diese in einer Registerklasse registrieren möchte. Das sollte möglichst automatisch geschehen, funktioniert aber nicht, da vermutlich einige Objekte noch nicht intialisiert wurden. (Ich bekomme immer einen Zugriffsfehler)</p>
<p>Das Ganze ist so aufgebaut, dass ich probiert habe mithilfe dieses Templates</p>
<pre><code>#define globalCtor(T) global_ctor&lt;T&gt; static##T;

	template&lt;typename T&gt;
	class extx global_ctor
	{
		public:
			global_ctor() { T::_init(); }
			//~global_ctor() { Class::_uninit(); }
	};
</code></pre>
<p>die _ini() Funktion aufzurufen und darin dann die statische map der Registerklasse klasse gefüllt habe.</p>
<pre><code>Registry::registerA[&quot;test&quot;] = &amp;gx::Test;
</code></pre>
<p>An dieser Stelle gab es eine Zugriffsverletzung weil die Registry-Klasse vermutlich noch nicht erzeugt oder die Member im Speicher abgelegt waren.<br />
Das Ganze soll für mehrere Klassen dienen, die sich bzw. ihre Member bei der<br />
Registry anmelden sollen. Der manuelle aufruf bei Programmstart funktioniert übrigens, das heißt es liegt nicht an der Zuweisung an sich.</p>
<p>Jemand eine Idee wie man das anders (aber prinzipiell gleich) lösen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280885</guid><dc:creator><![CDATA[Pria]]></dc:creator><pubDate>Mon, 17 Dec 2012 13:56:14 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei globalem initialisieren on Mon, 17 Dec 2012 15:11:35 GMT]]></title><description><![CDATA[<p>Könnte was damit zu tun haben:<br />
<a href="http://www.parashift.com/c++-faq/static-init-order.html" rel="nofollow">http://www.parashift.com/c++-faq/static-init-order.html</a></p>
<p>Wie/wo/wann erzeugst du dieses &quot;Register-Objekt?&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280917</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 17 Dec 2012 15:11:35 GMT</pubDate></item></channel></rss>