<?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[statische Methoden]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich gehöre noch zu den C++ Anfängern und habe ein für mich riesiges Problem.<br />
Würde mich wirklich sehr freuen, wenn mir jemand helfen könnte.</p>
<p>Ich weiß bereits, dass in statischen Methoden der this-Zeiger konstant ist und ich somit keine Membervariablen ändern kann.</p>
<p>Was aber wenn ich genau das tun will?</p>
<p><strong>Hier mein momentaner Code etwas genauer, ich hoffe es ist verständlich?</strong></p>
<p>Ich habe eine Klasse initialize in der ich diese Methode deklariere</p>
<pre><code>static void capture_Macadress_PCU(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);
</code></pre>
<p>sie sieht so aus</p>
<pre><code>void initialize::capture_Macadress_PCU(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
	arp_proto *arp;
	arp = (arp_proto *) (pkt_data);

	if ((arp-&gt;ip_sender.byte1==192) &amp;&amp; (arp-&gt;ip_sender.byte2==168) &amp;&amp; (arp-&gt;ip_sender.byte3==17) &amp;&amp; (arp-&gt;ip_sender.byte4==110))
	{
	printf(&quot;Quelle:  %d.%d.%d.%d.%d.%d\n&quot;,
		arp-&gt;mac_src.byte1,
        arp-&gt;mac_src.byte2,
        arp-&gt;mac_src.byte3,
		arp-&gt;mac_src.byte4,
		arp-&gt;mac_src.byte5,
		arp-&gt;mac_src.byte6
        );

	pcap_breakloop(handle);
}
}
</code></pre>
<p>Aufgerufen wird diese Methode hier (als Callback bis eben pcap_breakloop ausgeführt wird)</p>
<pre><code>pcap_loop(initialize::adhandle,0, initialize::capture_Macadress_PCU, NULL);
</code></pre>
<p><strong>Mein Vorhaben</strong><br />
Ich möchte gerne statt der ausgabe s.h. oben</p>
<pre><code>printf(&quot;Quelle:  %d.%d.%d.%d.%d.%d\n&quot;,
		arp-&gt;mac_src.byte1,
        arp-&gt;mac_src.byte2,
        arp-&gt;mac_src.byte3,
		arp-&gt;mac_src.byte4,
		arp-&gt;mac_src.byte5,
		arp-&gt;mac_src.byte6
        );
</code></pre>
<p>diese Werte in Memvervariablen schreiben.</p>
<p><strong>Meine Frage:</strong><br />
Ist das irgendwie möglich, aus statischen Methoden auf Membervariablen zu schreiben?<br />
Oder muss ich alles umstrukturieren - falls ja wie?</p>
<p>Würde mich wirklich sehr über Hilfe, Anregungen, Tipps.. freuen.<br />
Vielen dank im voraus.</p>
<p>Gruß Tupo13</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/127243/statische-methoden</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 01:14:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/127243.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Nov 2005 15:58:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to statische Methoden on Tue, 22 Nov 2005 15:58:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich gehöre noch zu den C++ Anfängern und habe ein für mich riesiges Problem.<br />
Würde mich wirklich sehr freuen, wenn mir jemand helfen könnte.</p>
<p>Ich weiß bereits, dass in statischen Methoden der this-Zeiger konstant ist und ich somit keine Membervariablen ändern kann.</p>
<p>Was aber wenn ich genau das tun will?</p>
<p><strong>Hier mein momentaner Code etwas genauer, ich hoffe es ist verständlich?</strong></p>
<p>Ich habe eine Klasse initialize in der ich diese Methode deklariere</p>
<pre><code>static void capture_Macadress_PCU(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);
</code></pre>
<p>sie sieht so aus</p>
<pre><code>void initialize::capture_Macadress_PCU(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
	arp_proto *arp;
	arp = (arp_proto *) (pkt_data);

	if ((arp-&gt;ip_sender.byte1==192) &amp;&amp; (arp-&gt;ip_sender.byte2==168) &amp;&amp; (arp-&gt;ip_sender.byte3==17) &amp;&amp; (arp-&gt;ip_sender.byte4==110))
	{
	printf(&quot;Quelle:  %d.%d.%d.%d.%d.%d\n&quot;,
		arp-&gt;mac_src.byte1,
        arp-&gt;mac_src.byte2,
        arp-&gt;mac_src.byte3,
		arp-&gt;mac_src.byte4,
		arp-&gt;mac_src.byte5,
		arp-&gt;mac_src.byte6
        );

	pcap_breakloop(handle);
}
}
</code></pre>
<p>Aufgerufen wird diese Methode hier (als Callback bis eben pcap_breakloop ausgeführt wird)</p>
<pre><code>pcap_loop(initialize::adhandle,0, initialize::capture_Macadress_PCU, NULL);
</code></pre>
<p><strong>Mein Vorhaben</strong><br />
Ich möchte gerne statt der ausgabe s.h. oben</p>
<pre><code>printf(&quot;Quelle:  %d.%d.%d.%d.%d.%d\n&quot;,
		arp-&gt;mac_src.byte1,
        arp-&gt;mac_src.byte2,
        arp-&gt;mac_src.byte3,
		arp-&gt;mac_src.byte4,
		arp-&gt;mac_src.byte5,
		arp-&gt;mac_src.byte6
        );
</code></pre>
<p>diese Werte in Memvervariablen schreiben.</p>
<p><strong>Meine Frage:</strong><br />
Ist das irgendwie möglich, aus statischen Methoden auf Membervariablen zu schreiben?<br />
Oder muss ich alles umstrukturieren - falls ja wie?</p>
<p>Würde mich wirklich sehr über Hilfe, Anregungen, Tipps.. freuen.<br />
Vielen dank im voraus.</p>
<p>Gruß Tupo13</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924503</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Tue, 22 Nov 2005 15:58:57 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Tue, 22 Nov 2005 16:05:43 GMT]]></title><description><![CDATA[<p>Die Frage basiert auf falschen Annahmen.</p>
<p>Tupo13 schrieb:</p>
<blockquote>
<p>Ich weiß bereits, dass in statischen Methoden der this-Zeiger konstant ist und ich somit keine Membervariablen ändern kann.</p>
</blockquote>
<p>Der this-Zeiger ist nicht konstant, es gibt ihn in statischen Funktionen garnicht. Das heißt, statische Funktionen beziehen sich auf die Klasse, aber auf kein Objekt. Deswegen ist es möglich, A::static_method() aufzurufen, statt A_obj.static_method(), was aber auch funktioniert. Statische Funktionen können nur auf statische Member zugreifen.<br />
geloescht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924512</guid><dc:creator><![CDATA[geloescht]]></dc:creator><pubDate>Tue, 22 Nov 2005 16:05:43 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 06:55:50 GMT]]></title><description><![CDATA[<p>@ geloescht<br />
OK, vielen Dank für deine Antwort.</p>
<p>Ich kann also auf keinen Fall auf Member-Variablen in statischen Methoden zugreifen !</p>
<p>Wie kann ich das dann anders organisieren? Wie kann ich aus der statischen Methode eine nicht-statische machen?</p>
<p>Beim Funktionsaufruf in der Callbackfunktion (Parameter 3) werden ja keine Parameter angegeben ?????</p>
<pre><code>pcap_loop(initialize::adhandle,0, initialize::capture_Macadress_PCU, NULL);
</code></pre>
<p>vielen Dank im voraus für eure Hilfe<br />
Gruß Tupo13</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924877</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Wed, 23 Nov 2005 06:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 07:08:00 GMT]]></title><description><![CDATA[<p>Tupo13 schrieb:</p>
<blockquote>
<p>Ich kann also auf keinen Fall auf Member-Variablen in statischen Methoden zugreifen !</p>
</blockquote>
<p>Doch <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="😃"
    /> wenn die die Member-Variablen, static Variablen sind <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>
]]></description><link>https://www.c-plusplus.net/forum/post/924882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924882</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 23 Nov 2005 07:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 07:31:45 GMT]]></title><description><![CDATA[<p>Du könntest dir auch innerhalb der static Methode ein definiertes Objekt besorgen und dann auf dessen Member-Variablen zugreifen, z.B.:</p>
<pre><code class="language-cpp">class X
{
  int m_val;
public:
  static void global_f();
  static void local_f();

  void do_something();
}

x theX;
void X::global_f()
{
  theX.do_something();
  theX.m_val=7;
}

void x::local_f()
{
  X myX;
  myX.do_something();
  myX.m_val=7;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/924904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924904</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 23 Nov 2005 07:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 07:37:32 GMT]]></title><description><![CDATA[<p>@ Freak_Coder damke<br />
Das einzige was ich machen will ist eigentlich, das was ich in der statischen Methode ausgebe, in ein Array zu schreiben, ist das wirklich unmöglich?</p>
<p>Hat jemand schon einmal was von <strong>LibSigC++</strong> gehört?<br />
Könnte es damit gehen?<br />
Gibt es denn keine Möglichkeit?</p>
<p>sollte das unbedingt hinkriegen! und benötige unbedingt HILFE</p>
<p>Vielen Dank im voraus<br />
Gruß Tupo13</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924909</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Wed, 23 Nov 2005 07:37:32 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 07:40:38 GMT]]></title><description><![CDATA[<p>@ CStoll</p>
<p>Sorry, haben wohl grad gleichzeitig geschrieben?</p>
<p>Vielen Dank, weiß zwar noch nicht ganz genau wie du das meinst werde es mir aber sofort anschauen.</p>
<p>Kannst dir garnicht vorstellen wie froh ich über einen Lösungsvorschlag bin<br />
-<strong>Danke</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/924913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924913</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Wed, 23 Nov 2005 07:40:38 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 07:47:00 GMT]]></title><description><![CDATA[<p><strong>Super</strong></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a> - das wars was ich gesucht habe.</p>
<p>Danke<br />
ein glücklicher Anfänger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924919</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Wed, 23 Nov 2005 07:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 07:47:37 GMT]]></title><description><![CDATA[<p>Tupo13 schrieb:</p>
<blockquote>
<p>Vielen Dank, weiß zwar noch nicht ganz genau wie du das meinst werde es mir aber sofort anschauen.</p>
</blockquote>
<p>Dann etwas ausführlicher: Um nichtstatische Member-Elemente verwenden zu können, benötigst du ein konkretes Objekt. Eine &quot;normale&quot; Methode hat dafür &quot;*this&quot;, bei einer statischen Methode fehlt der this-Zeiger und du mußt dir dein Objekt woanders beschaffen. (das kann eine globale Variable sein wie im ersten Beispiel, eine lokale Variable wie im zweiten Beispiel oder was auch immer - du könntest auch mit &quot;static void func(X&amp; myX);&quot; ein Objekt als Parameter übergeben oder mit Hilfe der Parameter das richtige Objekt in einer std::map&lt;irgendwas,X&gt; suchen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924920</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 23 Nov 2005 07:47:37 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 08:11:47 GMT]]></title><description><![CDATA[<p>Noch eine Frage:</p>
<p>Ich hoffe, ich blamier mich nicht:</p>
<p>aber warum funktioniert das dann nicht? (in der statischen Funktion)</p>
<pre><code>initialize init;

Ip_addr *destIPadr;
destIPadr=(Ip_addr *) (init.destIP);

std::cout &lt;&lt;destIPadr-&gt;byte1&lt;&lt; std::endl;
</code></pre>
<p>Gruß Tupo13</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924943</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Wed, 23 Nov 2005 08:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 09:29:53 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a><br />
Leider funktioniert dein Beispiel nicht,<br />
wenn ich so auf Membervariable zugreife lesend oder schreibend bekomme ich immer einen unsinnigen Wert.</p>
<p>Auf normale Methoden lässt er mich auch nicht zugreifen</p>
<p>Mache ich etwas falsch?</p>
<p>Gruß Tupo13</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925007</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Wed, 23 Nov 2005 09:29:53 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 09:40:31 GMT]]></title><description><![CDATA[<p>Das wurde zwar AFAIK schon mal gesagt, aber in statischen Member-Methoden arbeitest du OHNE eine Instanz von dem Objekt, d.h. die nicht statischen Member (Methoden) existieren nicht, deshalb kein Zugriff.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925014</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Wed, 23 Nov 2005 09:40:31 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 09:47:15 GMT]]></title><description><![CDATA[<p>Tupo13 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a><br />
Leider funktioniert dein Beispiel nicht,<br />
wenn ich so auf Membervariable zugreife lesend oder schreibend bekomme ich immer einen unsinnigen Wert.</p>
</blockquote>
<p>Was meinst du mit &quot;unsinniger Wert&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925021</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Wed, 23 Nov 2005 09:47:15 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 09:51:01 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a></p>
<p>Also als unsinniger Wert bekomme ich<br />
-858993460 statt z.B. 10</p>
<p>Aber so wie GPC sagt funktioniert das so sowieso nicht - oder doch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925023</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Wed, 23 Nov 2005 09:51:01 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 10:37:35 GMT]]></title><description><![CDATA[<p>Ein Beispiel:</p>
<pre><code class="language-cpp">struct Foo {
  static void staticMethod(int);
private:
  static int statMem;
  int nonStatMem;
};

int Foo::statMem = 0;

void Foo::staticMethod(int i) {
  statMem = i;  //Geht, da statMem static ist
  //nonStatMem = i;  //Crash! nonStatMem ist nicht static!
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/925032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925032</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Wed, 23 Nov 2005 10:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to statische Methoden on Wed, 23 Nov 2005 10:18:52 GMT]]></title><description><![CDATA[<p>@ GPC</p>
<p>OK danke, jetzt hab ichs endlich mal soweit kapiert.</p>
<p>nur muss man es so schreiben</p>
<pre><code>int Foo::statMem = 0;
</code></pre>
<p>Danke Gruß Tupo13</p>
]]></description><link>https://www.c-plusplus.net/forum/post/925051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/925051</guid><dc:creator><![CDATA[Tupo13]]></dc:creator><pubDate>Wed, 23 Nov 2005 10:18:52 GMT</pubDate></item></channel></rss>