<?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[static funktion verwenden, weiss echt nicht mehr weiter]]></title><description><![CDATA[<p>also ich hab folgendes problem</p>
<p>in meiner dlg.h hab ich stehen ( hab code uebernommen )</p>
<pre><code class="language-cpp">static int CALLBACK OnlineCallBack(int nStatus, strTraceMessageData* pTraceData, void* pWnd);
</code></pre>
<p>in der cpp steht am anfang</p>
<pre><code class="language-cpp">int CALLBACK CRunDlg::OnlineCallBack(
						int Status,						
						strTraceMessageData* pTraceData, 
						void* pWnd					

)
{
	strTraceMessageData*	pNewTraceData;
	int						nLength;

	CRunDlg*	pThis=(CRunDlg*)pWnd;

	pThis-&gt;m_TraceStatus=Status;

// und so weiter und so weiter
</code></pre>
<p>jetzt hab ich ne public int variale in meiner .h stehen. diese moechte ich in der fkt. erhoehen. also hab ich es mit einer referenz versucht</p>
<p>und dann noch nach void* pWnd noch ,int &amp;meinevar</p>
<p>eingegeben<br />
dann hab ich in der fkt.</p>
<pre><code class="language-cpp">meinevar++; // gemacht. aber ist waehrend der laufzeit abgestuerzt :(
</code></pre>
<p>also dach ich mir</p>
<p>ok ohne ref. dann rufst halt ne fkt auf</p>
<p>also alles ganz normal gelassen, sprich wie vorher ( programm geht auch wunderbar )</p>
<p>und hab noch ne fkt hinzugefuegt die meine variable um 1 erhoeht</p>
<p>dann ruf ich die fkt in der onlinecallback auf.</p>
<pre><code class="language-cpp">// in der .h

	static int arise_count_messages();  // static sonst meckert er. WARUM eigentlich?

	static int count_messages_forrate;  // musste ich auch static machen, warum den wieder?
</code></pre>
<p>jetzt bring er mir ne fehlermeldung</p>
<p>error LNK2001: unresolved external symbol &quot;public: static int CRunDlg::count_messages_forrate&quot; (?count_messages_forrate@CRunDlg@@2HA)</p>
<p>das ist zum flennen. wie kann ich den da einfach ne variable hochzehlen, verflixt und zugenaeht. bitte kann mir da einer helfen? dank im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/76452/static-funktion-verwenden-weiss-echt-nicht-mehr-weiter</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 15:56:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/76452.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Jun 2004 13:23:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to static funktion verwenden, weiss echt nicht mehr weiter on Fri, 11 Jun 2004 13:23:31 GMT]]></title><description><![CDATA[<p>also ich hab folgendes problem</p>
<p>in meiner dlg.h hab ich stehen ( hab code uebernommen )</p>
<pre><code class="language-cpp">static int CALLBACK OnlineCallBack(int nStatus, strTraceMessageData* pTraceData, void* pWnd);
</code></pre>
<p>in der cpp steht am anfang</p>
<pre><code class="language-cpp">int CALLBACK CRunDlg::OnlineCallBack(
						int Status,						
						strTraceMessageData* pTraceData, 
						void* pWnd					

)
{
	strTraceMessageData*	pNewTraceData;
	int						nLength;

	CRunDlg*	pThis=(CRunDlg*)pWnd;

	pThis-&gt;m_TraceStatus=Status;

// und so weiter und so weiter
</code></pre>
<p>jetzt hab ich ne public int variale in meiner .h stehen. diese moechte ich in der fkt. erhoehen. also hab ich es mit einer referenz versucht</p>
<p>und dann noch nach void* pWnd noch ,int &amp;meinevar</p>
<p>eingegeben<br />
dann hab ich in der fkt.</p>
<pre><code class="language-cpp">meinevar++; // gemacht. aber ist waehrend der laufzeit abgestuerzt :(
</code></pre>
<p>also dach ich mir</p>
<p>ok ohne ref. dann rufst halt ne fkt auf</p>
<p>also alles ganz normal gelassen, sprich wie vorher ( programm geht auch wunderbar )</p>
<p>und hab noch ne fkt hinzugefuegt die meine variable um 1 erhoeht</p>
<p>dann ruf ich die fkt in der onlinecallback auf.</p>
<pre><code class="language-cpp">// in der .h

	static int arise_count_messages();  // static sonst meckert er. WARUM eigentlich?

	static int count_messages_forrate;  // musste ich auch static machen, warum den wieder?
</code></pre>
<p>jetzt bring er mir ne fehlermeldung</p>
<p>error LNK2001: unresolved external symbol &quot;public: static int CRunDlg::count_messages_forrate&quot; (?count_messages_forrate@CRunDlg@@2HA)</p>
<p>das ist zum flennen. wie kann ich den da einfach ne variable hochzehlen, verflixt und zugenaeht. bitte kann mir da einer helfen? dank im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/538106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/538106</guid><dc:creator><![CDATA[newkid]]></dc:creator><pubDate>Fri, 11 Jun 2004 13:23:31 GMT</pubDate></item><item><title><![CDATA[Reply to static funktion verwenden, weiss echt nicht mehr weiter on Fri, 11 Jun 2004 16:04:20 GMT]]></title><description><![CDATA[<p>Hi newkid,</p>
<p>ist Dir klar was static members sind?</p>
<p>Fall nein, lies folgendes:<br />
Eine static variable ist der Klasse zugeordnet und nicht der objekt instanz. Das heißt Es gibt sie nur einmal für alle abjekte dieser Klasse.</p>
<pre><code class="language-cpp">#inlcude &lt;iostream.h&gt;
class A{ public: static int i; };
int A::i = 99;
int main(int argc, char* argv[])
{
	A a1;
	A a2;

	cout &lt;&lt; a1.i &lt;&lt; endl;
	a1.i = 0;
	cout &lt;&lt; a1.i &lt;&lt; endl;
	a2.i = 100;
	cout &lt;&lt; a1.i &lt;&lt; endl;
}
</code></pre>
<p>Das Beispiel soll zeigen, daß es egal ist ob Du auf i durch a1 oder a2 zugreifst, einfach weil es nur einen Speicherplatz für beide gibt.<br />
Außerdem siehst Du wie die variable korrekt initialisiert wird, damit verschwindet dein Linker error. Per definition werden statische variablen außerhalb der Klassen definition initialisiert. In Deinem Fall in der .cpp<br />
Der große Unterschied bei statischen Funktionen ist, daß kein this pointer übergeben wird. Das heißt Du kannst in einer statischen funktion nicht schreiben</p>
<pre><code class="language-cpp">this-&gt;MyVar++;
</code></pre>
<p>was gleichbedeutend ist mit:</p>
<pre><code class="language-cpp">MyVar++;
</code></pre>
<p>Aber nur wenn die gleiche Variable nicht lokal ( in der Funktion ) überschrieben wurde, denn dann gilt die lokale Version. Da ein Teil bei deinem Code fehlt bzw. nur grob beschrieben wurde, könnte da der Grund liegen warum Dein Zugriff auf die Member variable compiliert wurde obwohl Du in einer statische funktion warst.<br />
Übrigens, um das ganze zu lösen, benutze den pThis pointer in der Funktion, denn dafür ist er da.</p>
<pre><code class="language-cpp">pThis-&gt;MyVar++;
</code></pre>
<p>das sollte gehen, sonst liegt der wurm nochmal ganz woanders<br />
Gruß<br />
Ingo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/538191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/538191</guid><dc:creator><![CDATA[Ingo Nolden]]></dc:creator><pubDate>Fri, 11 Jun 2004 16:04:20 GMT</pubDate></item><item><title><![CDATA[Reply to static funktion verwenden, weiss echt nicht mehr weiter on Fri, 11 Jun 2004 22:58:21 GMT]]></title><description><![CDATA[<p>also danke für die erläuterungen, hmm was man wieder neu lernt alles. cool</p>
<p>also du meinst ich soll ganz normal eine variable nehmen</p>
<p>und dann einfach in der static fkt.</p>
<p>pThis-&gt;Var++;</p>
<p>und das geht auf jedenfall? cool</p>
<p>bin erst am montag/dienstag am platz</p>
<p>ist aber wichtig das ich da ne variable hochzähle. da ich trace und die fkt. aufgerufen wird, falls was getraced wird.</p>
<p>hmmm ich hoff es geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/538395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/538395</guid><dc:creator><![CDATA[newkid]]></dc:creator><pubDate>Fri, 11 Jun 2004 22:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to static funktion verwenden, weiss echt nicht mehr weiter on Tue, 15 Jun 2004 10:58:05 GMT]]></title><description><![CDATA[<p>wie kann ich dir danken????</p>
<p>also</p>
<p>DANKE MERCI</p>
<p>hat geklappt</p>
<p>was sehr gut ist</p>
<p>du sagst nicht nur die loesung, sondern vermittelst gut noch das hintergrundwissen dazu. <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="👍"
    /> <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>
<p>so leute wie dich braucht das forum <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>gruss</p>
<p>newkid</p>
]]></description><link>https://www.c-plusplus.net/forum/post/540652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/540652</guid><dc:creator><![CDATA[newkid]]></dc:creator><pubDate>Tue, 15 Jun 2004 10:58:05 GMT</pubDate></item></channel></rss>