<?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[Zeiger an Klassenelementfunktion übergeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich poste erstmal meinen Code:</p>
<p>Die Klasse load_dll:</p>
<pre><code>#include &quot;StdAfx.h&quot;
#include &quot;load_dll.h&quot;

load_dll::load_dll(void)
{
}

load_dll::~load_dll(void)
{
}

void load_dll::load(IApplication *pApp)
{
	CLSID clsid;
	HRESULT hr;

	CoInitialize(NULL); 

	hr = CLSIDFromString(L&quot;DVOBJAPILib.DvISEAPI&quot;, &amp;clsid);

	hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER,  IID_IApplication, (void**)&amp;pApp);
	printf(&quot;HR: %x&quot;, hr);
}
</code></pre>
<p>Die Main Funktion:</p>
<pre><code>int _tmain(int argc, _TCHAR* argv[])
{

	//Variablen
	IApplication *pApp = NULL;
	long test = 0;

	load_dll dll_load;
	dll_load.load(pApp);

	pApp-&gt;get_MajorVersion(&amp;test);
	printf(&quot;Major: %d&quot;, test);

	return 0;
}
</code></pre>
<p>Als erstes möchte ich sagen, das ich noch nicht lange C++ programmiere und ich mich auch gerade im Momment erst so richtig mit dem Klassenkonzept vertraut mache, wenn da also das ein oder andere im Quellcode is, wo man sagen würde &quot;na so macht man das aber normalerweise nicht&quot;, so bitte ich dies zu berücksichtigen.</p>
<p>Zu meinem Problem:<br />
Ich möchte eignetlich nur den Zeiger &quot;IApplication *pApp&quot; aus der &quot;_tmain&quot; an die Funktion &quot;load&quot; aus der Klasse &quot;load_dll&quot; übergeben. Die läd dann für mich die DLL und kann dann so mit &quot;pApp&quot; in &quot;_tmain&quot; arbeiten. Geht aber leider nicht...<br />
Er kompiliert das ganze auch, aber das Programm stürzt ab. Ich denke mal die alten c++ Hasen wissen sofort woran das liegt, ich steh seid drei Stunden auf'm Schlauch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Grüße!<br />
Ben</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215106/zeiger-an-klassenelementfunktion-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 11:46:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215106.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Jun 2008 13:43:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Fri, 06 Jun 2008 13:43:50 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich poste erstmal meinen Code:</p>
<p>Die Klasse load_dll:</p>
<pre><code>#include &quot;StdAfx.h&quot;
#include &quot;load_dll.h&quot;

load_dll::load_dll(void)
{
}

load_dll::~load_dll(void)
{
}

void load_dll::load(IApplication *pApp)
{
	CLSID clsid;
	HRESULT hr;

	CoInitialize(NULL); 

	hr = CLSIDFromString(L&quot;DVOBJAPILib.DvISEAPI&quot;, &amp;clsid);

	hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER,  IID_IApplication, (void**)&amp;pApp);
	printf(&quot;HR: %x&quot;, hr);
}
</code></pre>
<p>Die Main Funktion:</p>
<pre><code>int _tmain(int argc, _TCHAR* argv[])
{

	//Variablen
	IApplication *pApp = NULL;
	long test = 0;

	load_dll dll_load;
	dll_load.load(pApp);

	pApp-&gt;get_MajorVersion(&amp;test);
	printf(&quot;Major: %d&quot;, test);

	return 0;
}
</code></pre>
<p>Als erstes möchte ich sagen, das ich noch nicht lange C++ programmiere und ich mich auch gerade im Momment erst so richtig mit dem Klassenkonzept vertraut mache, wenn da also das ein oder andere im Quellcode is, wo man sagen würde &quot;na so macht man das aber normalerweise nicht&quot;, so bitte ich dies zu berücksichtigen.</p>
<p>Zu meinem Problem:<br />
Ich möchte eignetlich nur den Zeiger &quot;IApplication *pApp&quot; aus der &quot;_tmain&quot; an die Funktion &quot;load&quot; aus der Klasse &quot;load_dll&quot; übergeben. Die läd dann für mich die DLL und kann dann so mit &quot;pApp&quot; in &quot;_tmain&quot; arbeiten. Geht aber leider nicht...<br />
Er kompiliert das ganze auch, aber das Programm stürzt ab. Ich denke mal die alten c++ Hasen wissen sofort woran das liegt, ich steh seid drei Stunden auf'm Schlauch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Grüße!<br />
Ben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524094</guid><dc:creator><![CDATA[Benjamin@Bonn]]></dc:creator><pubDate>Fri, 06 Jun 2008 13:43:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Fri, 06 Jun 2008 14:49:02 GMT]]></title><description><![CDATA[<p>Hallo,<br />
da du deinen Pointer pApp per Value an load() übergibst, ist pApp nachher genauso null wie vorher. Völlig unabhängig davon, was du in load() machst.</p>
<p>Schau in deinem Lieblingsbuch über C++ noch mal unter den Stichpunkten Call-by-Value und Call-by-Reference nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524132</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 06 Jun 2008 14:49:02 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Fri, 06 Jun 2008 15:22:42 GMT]]></title><description><![CDATA[<p>Okay, das hab ich auch schon probiert:</p>
<p>In der Main (call-by-reference):</p>
<pre><code>dll_load.load(&amp;pApp);
</code></pre>
<p>Allerdings sagt mir dann der Compiler:</p>
<pre><code>error C2664: 'load_dll::load': Konvertierung des Parameters 1 von 'IApplication **__w64 ' in 'IApplication *' nicht möglich
</code></pre>
<p>Hilfe!! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1524161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524161</guid><dc:creator><![CDATA[Benjamin@Bonn]]></dc:creator><pubDate>Fri, 06 Jun 2008 15:22:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Tue, 10 Jun 2008 08:05:46 GMT]]></title><description><![CDATA[<p>Kann mir keiner Helfen?</p>
<p>Mir ist klar (zumindest hoffe ich das), das ich der Funktion die Referenz,<br />
also mit &amp;pApp übergeben muss.</p>
<p>Muss dann die Klasse so aussehen:</p>
<blockquote>
<p>void load_dll::load(IApplication **pApp) {}</p>
</blockquote>
<p>-&gt; Zeiger auf Zeiger?</p>
<p>Wenn ja, wie funktioniert dann das?</p>
<blockquote>
<p>hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IApplication, <strong>(void</strong>)&amp;pApp)**;</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1526187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526187</guid><dc:creator><![CDATA[Benjamin@Bonn]]></dc:creator><pubDate>Tue, 10 Jun 2008 08:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Tue, 10 Jun 2008 08:12:58 GMT]]></title><description><![CDATA[<p>Benjamin@Bonn schrieb:</p>
<blockquote>
<p>Mir ist klar (zumindest hoffe ich das), das ich der Funktion die Referenz, also mit &amp;pApp übergeben muss.</p>
</blockquote>
<p>Du bist dir aber bewusst, dass wenn du beim Funktionsaufruf einen &amp;-Operator vor den Parameter schreibst, du die Adresse (und nicht die Referenz) übergibst?<br />
Und was versuchst du mit dem Doppelzeiger?</p>
<p>Du musst in C++ grundsätzlich zwischen Zeigern und Referenzen unterscheiden.</p>
<pre><code class="language-cpp">void ZeigerFunktion(int *a)
{
   *a; // Zugriff auf Wert von a
}
void ReferenzFunktion(int &amp;a)
{
   a; // Zugriff auf Wert von a
}

int main()
{
   int x = 45;
   ZeigerFunktion(&amp;x);   // Aufruf: Zeiger mit &amp; (Adressoperator)
   ReferenzFunktion(x);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1526194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526194</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 10 Jun 2008 08:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Tue, 10 Jun 2008 08:16:42 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a><br />
Danke Danke Danke!<br />
Das war mir bis jetzt noch nicht so richtig klar.<br />
Damit werd ich jetzt erstmal ein bischen spielen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526197</guid><dc:creator><![CDATA[Benjamin@Bonn]]></dc:creator><pubDate>Tue, 10 Jun 2008 08:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Tue, 10 Jun 2008 08:37:47 GMT]]></title><description><![CDATA[<p>Habs jetzt!</p>
<p>Ich ruf die Funktion wie folgt auf:</p>
<pre><code>dll_load.load(pApp);
</code></pre>
<p>Und die Funktion schaut so aus:</p>
<pre><code>void load_dll::load(IApplication *&amp;pApp) {}
</code></pre>
<p>-&gt;Referenz auf Zeiger</p>
<p>Danke nochmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526208</guid><dc:creator><![CDATA[Benjamin@Bonn]]></dc:creator><pubDate>Tue, 10 Jun 2008 08:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Tue, 10 Jun 2008 08:48:08 GMT]]></title><description><![CDATA[<p>Benjamin@Bonn schrieb:</p>
<blockquote>
<p>Und die Funktion schaut so aus:</p>
<pre><code>void load_dll::load(IApplication *&amp;pApp) {}
</code></pre>
<p>-&gt;Referenz auf Zeiger</p>
</blockquote>
<p>Aber wieso machst du es so kompliziert? Reicht eine einfache Referenz nicht?<br />
Also etwa so:</p>
<pre><code class="language-cpp">void load_dll::load(IApplication &amp;pApp)
{
   pApp // Zugriff auf pApp
}
</code></pre>
<p>Und der Aufruf bliebe der gleiche:</p>
<pre><code class="language-cpp">dll_load.load(pApp);
</code></pre>
<p>Denn normalerweise sollte eine einfache Referenz reichen. Oder brauchst du intern noch einen Zeiger? Wie wird <code>pApp</code> in der Funktion gehandhabt? Zeig doch mal die Funktion so, wie sie jetzt aussieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526212</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 10 Jun 2008 08:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger an Klassenelementfunktion übergeben on Tue, 10 Jun 2008 09:42:41 GMT]]></title><description><![CDATA[<p>So schaut's momentan aus...</p>
<p>Klasse load_dll:</p>
<pre><code>#include &quot;StdAfx.h&quot;
#include &quot;load_dll.h&quot;

load_dll::load_dll(void)
{
}

load_dll::~load_dll(void)
{
}

void load_dll::load(IApplication *&amp;pApp)
{
	CLSID clsid;
	HRESULT hr;

	CoInitialize(NULL); 

	hr = CLSIDFromString(L&quot;DVOBJAPILib.DvISEAPI&quot;, &amp;clsid);

	hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER,  IID_IApplication, (void**)&amp;pApp);
}
</code></pre>
<p>Main:</p>
<pre><code>int _tmain(int argc, _TCHAR* argv[])
{

	//Variablen
	IApplication *pApp = NULL;
	Account *pAcc = NULL;
	long test = 0; //nur zum testen

	load_dll dll_load;
	dll_load.load(pApp);

	pApp-&gt;get_MajorVersion(&amp;test); //nur zum testen 
	printf(&quot;Major: %d&quot;, test); //nur zum testen

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1526234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526234</guid><dc:creator><![CDATA[Benjamin@Bonn]]></dc:creator><pubDate>Tue, 10 Jun 2008 09:42:41 GMT</pubDate></item></channel></rss>