<?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[Frage zu Memberzugriff bei Vererbung]]></title><description><![CDATA[<p>Hallo, ich habe ein Problem in einem Project. Ich habe eine freie Funktion, die ein Object der Klasse A als Argument erwartet. Diese muss in einer Klasse aufgerufen werden, die von A erbt:</p>
<pre><code class="language-cpp">struct A
{
	int member;
	void printm()
	{
		std::cout&lt;&lt;member;
	}
};
void func(A a)
{
	a.printm();
}
struct B : public A
{
	void test()
	{
		func( /*?*/ );
	}
};
int main()
{
	B b;
	b.test();
}
</code></pre>
<p>Wie rufe ich diese Funktion dann auf? Oder wie muss ich mein Design verändern?<br />
Schonmal danke für Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282713/frage-zu-memberzugriff-bei-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 23:39:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282713.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Feb 2011 20:23:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Memberzugriff bei Vererbung on Thu, 24 Feb 2011 20:23:50 GMT]]></title><description><![CDATA[<p>Hallo, ich habe ein Problem in einem Project. Ich habe eine freie Funktion, die ein Object der Klasse A als Argument erwartet. Diese muss in einer Klasse aufgerufen werden, die von A erbt:</p>
<pre><code class="language-cpp">struct A
{
	int member;
	void printm()
	{
		std::cout&lt;&lt;member;
	}
};
void func(A a)
{
	a.printm();
}
struct B : public A
{
	void test()
	{
		func( /*?*/ );
	}
};
int main()
{
	B b;
	b.test();
}
</code></pre>
<p>Wie rufe ich diese Funktion dann auf? Oder wie muss ich mein Design verändern?<br />
Schonmal danke für Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2026100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2026100</guid><dc:creator><![CDATA[DeriveThis]]></dc:creator><pubDate>Thu, 24 Feb 2011 20:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Memberzugriff bei Vererbung on Thu, 24 Feb 2011 20:26:09 GMT]]></title><description><![CDATA[<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2026101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2026101</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 24 Feb 2011 20:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Memberzugriff bei Vererbung on Thu, 24 Feb 2011 20:27:08 GMT]]></title><description><![CDATA[<p>Was willst Du denn machen?</p>
<p>Du kannst func(*this) schreiben, aber dann wird von der aktuellen Instanz eine Kopie erstellt und diese gesliced, d.h. alles, was mit B zu tun hat, fällt weg. Auf dieser Kopie wird dann printm() ausgeführt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2026102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2026102</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 24 Feb 2011 20:27:08 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Memberzugriff bei Vererbung on Thu, 24 Feb 2011 20:34:22 GMT]]></title><description><![CDATA[<p>Ah, so einfach ist das. Danke schön <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/2026104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2026104</guid><dc:creator><![CDATA[DeriveThis]]></dc:creator><pubDate>Thu, 24 Feb 2011 20:34:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Memberzugriff bei Vererbung on Thu, 24 Feb 2011 21:44:12 GMT]]></title><description><![CDATA[<p>DeriveThis schrieb:</p>
<blockquote>
<p>Ah, so einfach ist das. Danke schön <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>
</blockquote>
<p>Eigentlich wollte Eisflamme dich auf ein Problem in deinem Code hinweisen, Slicing ist etwas dass man kaum haben will. Du wärst vermutlich besser beraten func() eine Referenz und keine Kopie nehmen zu lassen: func(A&amp; a). Dann fällt das Problem mit dem Slicing auch weg...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2026141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2026141</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 24 Feb 2011 21:44:12 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Memberzugriff bei Vererbung on Thu, 24 Feb 2011 21:51:23 GMT]]></title><description><![CDATA[<p>in meinem Fall nimmt &quot;func&quot; eh eine Referenz auf die Klasse.</p>
<pre><code class="language-cpp">struct Foo
{
   Some member;
   void a_member_function();
};
void func(Foo &amp; foo)
{
   do_something_with_Foo(foo);
}
struct Bar : public Foo
{
    void use_func()
    {
        func( *this );
    }
};
</code></pre>
<p>Aber wieso fällt hier das slicing weg? Es wird doch wieder nur der &quot;Foo&quot; Teil von Bar weitergegeben, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2026144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2026144</guid><dc:creator><![CDATA[DeriveThis]]></dc:creator><pubDate>Thu, 24 Feb 2011 21:51:23 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Memberzugriff bei Vererbung on Thu, 24 Feb 2011 21:59:49 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Object_slicing" rel="nofollow">http://en.wikipedia.org/wiki/Object_slicing</a> <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/2026147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2026147</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 24 Feb 2011 21:59:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Memberzugriff bei Vererbung on Fri, 25 Feb 2011 17:18:08 GMT]]></title><description><![CDATA[<p>nein, es wird ein zeiger weitergegeben. und von diesem zeiger kann man später noch auf die member von B zugreifen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2026482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2026482</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 25 Feb 2011 17:18:08 GMT</pubDate></item></channel></rss>