<?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[Zugriff auf Objekte in ineinander verschachtelten Klassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe das Problem, dass ich auf Objekte in ineinander verschachtelten Klassen zugreifen muss.</p>
<p>Ich muss über a_class auf ii in c_class zugreifen, siehe Quellcode.<br />
Wie funktioniert das?</p>
<p>(Das Problem ergibt sich bei meinem gsoap-Client, ich kann nicht einfach &quot;c_class&quot; ansteuern, sondern muss über &quot;a_class&quot;)</p>
<p>Vielen Dank für Eure Hilfe</p>
<p>test_classes_.h:</p>
<pre><code>class a_class;
class b_class;
class c_class;

class a_class
{
public:
        a_class();
        ~a_class();
        b_class* b_obj;
};

class b_class
{
public:
        b_class();
        ~b_class();
        c_class* c_obj;
};

class c_class
{
public:
        c_class();
        ~c_class();
        int ii;
};
</code></pre>
<p>test_classes_.cpp:</p>
<pre><code>1  #include &quot;test_classes_.h&quot;
2  #include &lt;iostream&gt;
3  using namespace std;
4
5  int main()
6  {
7         int erg;
8         a_class a;
9         //b_class b;
10        //c_class c;
11
12        //variable in c_class setzen
13        a-&gt;b_obj-&gt;c_obj.ii = 1;
14
15        //variable in c_class auslesen
16        erg = a-&gt;b_obj-&gt;c_obj.ii;
17
18        std::cout&lt;&lt;&quot;erg von ii  = &quot;&lt;&lt; erg &lt;&lt;std::endl;
19
20        return 0;
21  }
</code></pre>
<p>Fehlermeldung:<br />
test_classes_.cpp: In function »int main()«:<br />
test_classes_.cpp:13: Fehler: Basisoperand von »-&gt;« hat Nicht-Zeiger-Typ »a_class«<br />
test_classes_.cpp:16: Fehler: Basisoperand von »-&gt;« hat Nicht-Zeiger-Typ »a_class«</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245441/zugriff-auf-objekte-in-ineinander-verschachtelten-klassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 20:17:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245441.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Jul 2009 10:44:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 10:44:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe das Problem, dass ich auf Objekte in ineinander verschachtelten Klassen zugreifen muss.</p>
<p>Ich muss über a_class auf ii in c_class zugreifen, siehe Quellcode.<br />
Wie funktioniert das?</p>
<p>(Das Problem ergibt sich bei meinem gsoap-Client, ich kann nicht einfach &quot;c_class&quot; ansteuern, sondern muss über &quot;a_class&quot;)</p>
<p>Vielen Dank für Eure Hilfe</p>
<p>test_classes_.h:</p>
<pre><code>class a_class;
class b_class;
class c_class;

class a_class
{
public:
        a_class();
        ~a_class();
        b_class* b_obj;
};

class b_class
{
public:
        b_class();
        ~b_class();
        c_class* c_obj;
};

class c_class
{
public:
        c_class();
        ~c_class();
        int ii;
};
</code></pre>
<p>test_classes_.cpp:</p>
<pre><code>1  #include &quot;test_classes_.h&quot;
2  #include &lt;iostream&gt;
3  using namespace std;
4
5  int main()
6  {
7         int erg;
8         a_class a;
9         //b_class b;
10        //c_class c;
11
12        //variable in c_class setzen
13        a-&gt;b_obj-&gt;c_obj.ii = 1;
14
15        //variable in c_class auslesen
16        erg = a-&gt;b_obj-&gt;c_obj.ii;
17
18        std::cout&lt;&lt;&quot;erg von ii  = &quot;&lt;&lt; erg &lt;&lt;std::endl;
19
20        return 0;
21  }
</code></pre>
<p>Fehlermeldung:<br />
test_classes_.cpp: In function »int main()«:<br />
test_classes_.cpp:13: Fehler: Basisoperand von »-&gt;« hat Nicht-Zeiger-Typ »a_class«<br />
test_classes_.cpp:16: Fehler: Basisoperand von »-&gt;« hat Nicht-Zeiger-Typ »a_class«</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742642</guid><dc:creator><![CDATA[c++user_xy_]]></dc:creator><pubDate>Tue, 14 Jul 2009 10:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 10:56:59 GMT]]></title><description><![CDATA[<p>c++user_xy_ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">a-&gt;b_obj-&gt;c_obj.ii = 1;
    erg = a-&gt;b_obj-&gt;c_obj.ii;
</code></pre>
</blockquote>
<p>Probier stattdessen mal:</p>
<pre><code class="language-cpp">a.b_obj-&gt;c_obj-&gt;ii = 1;
    erg = a.b_obj-&gt;c_obj-&gt;ii;
</code></pre>
<p>Beachte: &quot;a-&gt;&quot; wurde durch &quot;a.&quot; ersetzt und &quot;c_obj.&quot; durch &quot;c_obj-&gt;&quot;</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742650</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 14 Jul 2009 10:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 11:11:34 GMT]]></title><description><![CDATA[<p>Hallo SP,<br />
mit deiner Lösung erhalte ich:</p>
<p>/tmp/cchAq2wb.o: In function <code>\_\_static\_initialization\_and\_destruction_0(int, int)': test\_classes\_.cpp:(.text+0x1d): undefined reference to</code>std::ios_base::Init::Init()'<br />
test_classes_.cpp:(.text+0x22): undefined reference to <code>std::ios_base::Init::~Init()' /tmp/cchAq2wb.o: In function</code>main':<br />
test_classes_.cpp:(.text+0x76): undefined reference to <code>a\_class::a\_class()' test\_classes\_.cpp:(.text+0x9a): undefined reference to</code>std::cout'<br />
test_classes_.cpp:(.text+0x9f): undefined reference to <code>std::basic\_ostream&lt;char, std::char\_traits&lt;char&gt; &gt;&amp; std::operator&lt;&lt; &lt;std::char\_traits&lt;char&gt; &gt;(std::basic\_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, char const*)' test\_classes\_.cpp:(.text+0xb0): undefined reference to</code>std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(int)'<br />
test_classes_.cpp:(.text+0xb8): undefined reference to <code>std::basic\_ostream&lt;char, std::char\_traits&lt;char&gt; &gt;&amp; std::endl&lt;char, std::char\_traits&lt;char&gt; &gt;(std::basic\_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)' test\_classes\_.cpp:(.text+0xc0): undefined reference to</code>std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; (*)(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;))'<br />
test_classes_.cpp:(.text+0xd0): undefined reference to <code>a\_class::~a\_class()' test\_classes\_.cpp:(.text+0xf0): undefined reference to</code>a_class::~a_class()'<br />
/tmp/cchAq2wb.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'<br />
collect2: ld gab 1 als Ende-Status zurück</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742663</guid><dc:creator><![CDATA[c++user_xy_]]></dc:creator><pubDate>Tue, 14 Jul 2009 11:11:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 11:40:01 GMT]]></title><description><![CDATA[<p>Du bist wenigstens einen Schritt weiter. Der Compiler übersetzt den Code. Dem Linker fehlen die <em>Definitionen</em> der Konstruktoren und Destruktoren, die Du vergessen hast, anzugeben. Du hast sie ja nur <em>deklariert</em>.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742693</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 14 Jul 2009 11:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 11:41:48 GMT]]></title><description><![CDATA[<p>Auf was sollen denn die Zeiger initialisiert werden? Du musst sie irgendwie initialisieren (zB im Konstruktor), sonst darfst Du sie nicht dereferenzieren.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742694</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 14 Jul 2009 11:41:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 11:54:34 GMT]]></title><description><![CDATA[<p>Herzlichen Dank für Deine Unterstützung.</p>
<p>In meinen gsoap-stub-classes hab ich keine Konstruktoren.</p>
<p>Wenn ich die Konstruktoren in dem Quellcode, den ich gepostet habe, weglasse, erscheint die gleiche Fehlermeldung. Hmm was ist zu tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742707</guid><dc:creator><![CDATA[c++user_xy_]]></dc:creator><pubDate>Tue, 14 Jul 2009 11:54:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 12:00:27 GMT]]></title><description><![CDATA[<p>c++user_xy_ schrieb:</p>
<blockquote>
<p>Hmm was ist zu tun?</p>
</blockquote>
<p>1. C++ lernen<br />
2. Deklarationen der &quot;ctors&quot; und &quot;dtors&quot; entfernen <em>oder</em> eine Definition der ctors und dtors hinzugüfen, zB in Deiner test_classes_.cpp.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742712</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 14 Jul 2009 12:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 12:23:00 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Dem Linker fehlen die <em>Definitionen</em> der Konstruktoren und Destruktoren, die Du vergessen hast, anzugeben.</p>
</blockquote>
<p>Dem Linker fehlt noch einiges mehr.</p>
<p>Hast Du vielleicht versucht, das Programm mit <strong>gcc</strong> statt <strong>g++</strong> zu linken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742733</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 14 Jul 2009 12:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 13:04:32 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a>:<br />
stimmt hatte gcc statt g++ verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742768</guid><dc:creator><![CDATA[c++user_xy_]]></dc:creator><pubDate>Tue, 14 Jul 2009 13:04:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 13:37:22 GMT]]></title><description><![CDATA[<p>Vielen Dank Leute. Das Problem hat sich erledigt.<br />
So klappts:</p>
<blockquote>
<p>#include &quot;test_classes_.h&quot;<br />
#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
#include &lt;sstream&gt;<br />
using namespace std;</p>
<p>/*<br />
* Konstruktor<br />
*/<br />
a_class::a_class()<br />
{<br />
a_class::b_obj = new b_class;<br />
}<br />
a_class::~a_class()<br />
{<br />
}</p>
<p>b_class::b_class()<br />
{<br />
b_class::c_obj = new c_class;<br />
}<br />
b_class::~b_class()<br />
{<br />
}</p>
<p>c_class::c_class()<br />
{<br />
c_class::ii=0;<br />
}<br />
c_class::~c_class()<br />
{<br />
}</p>
<p>/*<br />
* Main<br />
*/<br />
int main()<br />
{<br />
int erg;<br />
string str_erg;<br />
stringstream stream_erg;</p>
<p>a_class* a = new a_class;<br />
b_class* b = new b_class;<br />
c_class c;</p>
<p>/*<br />
* ii setzen<br />
*/<br />
a-&gt;b_obj-&gt;c_obj-&gt;ii = 1;</p>
<p>/*<br />
* ii auslesen<br />
*/<br />
erg = a-&gt;b_obj-&gt;c_obj-&gt;ii;</p>
<p>/*<br />
* Ausgabe<br />
*/<br />
stream_erg &lt;&lt; erg;<br />
str_erg = stream_erg.str();<br />
std::cout &lt;&lt; &quot;erg von ii = &quot; &lt;&lt; str_erg.c_str() &lt;&lt;std::endl;</p>
<p>return 0;<br />
}</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1742791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742791</guid><dc:creator><![CDATA[c++user_xy_]]></dc:creator><pubDate>Tue, 14 Jul 2009 13:37:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 15:13:01 GMT]]></title><description><![CDATA[<p>habe nun ein weiteres Problem.</p>
<p>wie muss der Zugriff aussehen, wenn in der header-Datei<br />
die Klasse b_class ein Member vom Typ Zeiger auf Zeiger (**) enthält?</p>
<p>Zugriff in test_classes_.cpp:</p>
<pre><code>erg = a-&gt;b_obj-&gt;c_obj-&gt;ii;
</code></pre>
<p>test_classes_.h:</p>
<pre><code>class b_class
{
public:
        b_class();
        ~b_class();
        c_class*     *c_obj;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1742868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742868</guid><dc:creator><![CDATA[c++user_xy_needs_help]]></dc:creator><pubDate>Tue, 14 Jul 2009 15:13:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Objekte in ineinander verschachtelten Klassen on Tue, 14 Jul 2009 15:34:24 GMT]]></title><description><![CDATA[<p>Fehlermeldung:</p>
<p>test_classes_.cpp: In constructor »b_class::b_class()«:<br />
test_classes_.cpp:20: Fehler: »c_class*« kann nicht nach »c_class**« in assignment umgewandelt werden<br />
test_classes_.cpp: In function »int main()«:<br />
test_classes_.cpp:52: Fehler: Abfrage des Elementes »ii« in »* a-&gt;a_class::b_obj-&gt;b_class::c_obj«, das vom Nicht-Klassentyp »c_class*« ist<br />
test_classes_.cpp:57: Fehler: Abfrage des Elementes »ii« in »* a-&gt;a_class::b_obj-&gt;b_class::c_obj«, das vom Nicht-Klassentyp »c_class*« ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1742882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1742882</guid><dc:creator><![CDATA[c++user_xy_needs_help]]></dc:creator><pubDate>Tue, 14 Jul 2009 15:34:24 GMT</pubDate></item></channel></rss>