<?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[member-funktion will nicht]]></title><description><![CDATA[<p>gerade bin ich dabei eine graphen implementation auszuprobieren.</p>
<p>dazu habe ich 2 klassen gebaut:<br />
knoten - speichert den inhalt eines knoten plus zeiger auf den nächsten knoten<br />
enthält member funktion finde, um knoten zu finden<br />
kanten - speichert einen oder mehrere kanten mit zeiger auf knoten.</p>
<p>nun habe ich die memberfunktionen ausserhalb definiert.</p>
<pre><code class="language-cpp">Knoten* Knoten::finde(inhalt k)
{
		Knoten *p_aktuell = p_erster;
		bool weiter = true;

		int i = 0;
		while ((p_aktuell != NULL) &amp;&amp; (weiter))
		{
			if (p_aktuell-&gt;key == k)
			{
				weiter = false;
			}
			else
			{
				p_aktuell = p_aktuell-&gt;p_naechsterKnoten;
				i++;
			}
		}
		return p_aktuell;	
}
</code></pre>
<p>will ich nun finde von ausserhalb aufrufen, z.b. um eine neue kante einzufügen, dann bekomme ich eine fehlermeldung.</p>
<p>ich habe die beiden klassen schon gegeneinander friend gemacht...<br />
er kommt immer mit der meldung &quot;finde nichtdeklarierter bezeichner&quot;</p>
<p>wenn ich finde so aufrufe Knoten::finde(a.key); ist die meldung weg, aber dann sagt er: Unzulässiger aufruf einer nicht statischen memberfunktion... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>wie kann ich den compiler dazu überreden doch finde zu benutzen??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/118085/member-funktion-will-nicht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 07:21:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118085.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Aug 2005 05:25:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to member-funktion will nicht on Mon, 15 Aug 2005 05:25:09 GMT]]></title><description><![CDATA[<p>gerade bin ich dabei eine graphen implementation auszuprobieren.</p>
<p>dazu habe ich 2 klassen gebaut:<br />
knoten - speichert den inhalt eines knoten plus zeiger auf den nächsten knoten<br />
enthält member funktion finde, um knoten zu finden<br />
kanten - speichert einen oder mehrere kanten mit zeiger auf knoten.</p>
<p>nun habe ich die memberfunktionen ausserhalb definiert.</p>
<pre><code class="language-cpp">Knoten* Knoten::finde(inhalt k)
{
		Knoten *p_aktuell = p_erster;
		bool weiter = true;

		int i = 0;
		while ((p_aktuell != NULL) &amp;&amp; (weiter))
		{
			if (p_aktuell-&gt;key == k)
			{
				weiter = false;
			}
			else
			{
				p_aktuell = p_aktuell-&gt;p_naechsterKnoten;
				i++;
			}
		}
		return p_aktuell;	
}
</code></pre>
<p>will ich nun finde von ausserhalb aufrufen, z.b. um eine neue kante einzufügen, dann bekomme ich eine fehlermeldung.</p>
<p>ich habe die beiden klassen schon gegeneinander friend gemacht...<br />
er kommt immer mit der meldung &quot;finde nichtdeklarierter bezeichner&quot;</p>
<p>wenn ich finde so aufrufe Knoten::finde(a.key); ist die meldung weg, aber dann sagt er: Unzulässiger aufruf einer nicht statischen memberfunktion... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>wie kann ich den compiler dazu überreden doch finde zu benutzen??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852303</guid><dc:creator><![CDATA[wuschelz]]></dc:creator><pubDate>Mon, 15 Aug 2005 05:25:09 GMT</pubDate></item><item><title><![CDATA[Reply to member-funktion will nicht on Mon, 15 Aug 2005 07:59:21 GMT]]></title><description><![CDATA[<p>Morgen,</p>
<p>dir ist klar, dass du von Knoten eine Instanz haben musst, mit der du arbeiten<br />
kannst?</p>
<p>Um auf Elementfunktionen von Klassen zugreifen zu koennen, gibt es zwei<br />
Moeglichkeiten, die da waeren:</p>
<p>Zugriff auf eine statische Elementfunktion:<br />
Du hast eine statische Elementfunktion definiert, welche _nicht_ den this-Zeiger<br />
implizit mitfuehrt und somit ohne eine Instanz der Klasse aufgerufen werden<br />
kann:</p>
<pre><code class="language-cpp">class MyClass {
    private:
    public:
        static int test() {
            return 1;
        }
};

//aufruf z. B.:
int i = MyClass::test();
</code></pre>
<p>Innerhalb von statischen Elementfunktionen kannst du _nicht_ auf Klassen-<br />
variablen zugreifen. Der Grund ist, dass der this-Zeiger, wie schon erwaehnt,<br />
nicht mitgefuehrt wird und somit der Bezug zum Objekt fehlt. Das ist auch klar,<br />
denn wir rufen die Funktion ohne eine Instanz der Klasse auf, s. o. Code.</p>
<p>Die zweite Moeglichkeit ist, ganz normal eine Instanz zu erstellen und mit<br />
dieser zu arbeiten:</p>
<pre><code class="language-cpp">class MyClass {
    private:
    public:
        int test() const {
            return 1;
        }
};

//aufruf
MyClass myClass;
int i = myClass.test();
</code></pre>
<p>mfg<br />
v R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852350</guid><dc:creator><![CDATA[virtuell Realisticer]]></dc:creator><pubDate>Mon, 15 Aug 2005 07:59:21 GMT</pubDate></item></channel></rss>