<?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[register methode]]></title><description><![CDATA[<p>Abend,</p>
<p>ich will in meiner Klasse A eine register Methode implementieren, die ein Objekt B bei der Klasse registriert. Wenn A dann das registrierte Objekt intern ändert, soll wirklich das registrierte Objekt B geändert werden!</p>
<p>Im Moment sehe ich da nur 2 Möglichkeiten:</p>
<ol>
<li>Referenz</li>
</ol>
<pre><code class="language-cpp">class A {
   B&amp; b;
public;
   A(B&amp; bObj) : b(bObj) { }
   void tuWas() { b.x = ... /* ändere B */ }
};
//Nutzung:
B b;
A a(b);
a.tuWas(); // hier wird jetzt b geändert
</code></pre>
<ol start="2">
<li>Zeiger</li>
</ol>
<pre><code class="language-cpp">class A {
   B* b;
public;
   A() : b(0) { }
   void register(B * bObj) { b = bObj; }
   void tuWas() { b-&gt;x = ... /* ändere B */ }
};
//Nutzung:
B b;
A a;
a.register(&amp;b);
a.tuWas(); // hier wird jetzt b geändert
</code></pre>
<p>Sehe ich das richtig, dass das die einzigen 2 Lösungsmöglichkeiten sind?<br />
Es ist ja nicht möglich, dass ich in A eine Referenz auf B habe (B&amp; b) und diese dann NICHT im Ctor setze, sondern erst mit einer register Methode, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/243981/register-methode</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 14:47:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243981.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Jun 2009 16:50:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to register methode on Tue, 23 Jun 2009 16:50:18 GMT]]></title><description><![CDATA[<p>Abend,</p>
<p>ich will in meiner Klasse A eine register Methode implementieren, die ein Objekt B bei der Klasse registriert. Wenn A dann das registrierte Objekt intern ändert, soll wirklich das registrierte Objekt B geändert werden!</p>
<p>Im Moment sehe ich da nur 2 Möglichkeiten:</p>
<ol>
<li>Referenz</li>
</ol>
<pre><code class="language-cpp">class A {
   B&amp; b;
public;
   A(B&amp; bObj) : b(bObj) { }
   void tuWas() { b.x = ... /* ändere B */ }
};
//Nutzung:
B b;
A a(b);
a.tuWas(); // hier wird jetzt b geändert
</code></pre>
<ol start="2">
<li>Zeiger</li>
</ol>
<pre><code class="language-cpp">class A {
   B* b;
public;
   A() : b(0) { }
   void register(B * bObj) { b = bObj; }
   void tuWas() { b-&gt;x = ... /* ändere B */ }
};
//Nutzung:
B b;
A a;
a.register(&amp;b);
a.tuWas(); // hier wird jetzt b geändert
</code></pre>
<p>Sehe ich das richtig, dass das die einzigen 2 Lösungsmöglichkeiten sind?<br />
Es ist ja nicht möglich, dass ich in A eine Referenz auf B habe (B&amp; b) und diese dann NICHT im Ctor setze, sondern erst mit einer register Methode, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1731716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1731716</guid><dc:creator><![CDATA[Registrierwahn]]></dc:creator><pubDate>Tue, 23 Jun 2009 16:50:18 GMT</pubDate></item><item><title><![CDATA[Reply to register methode on Wed, 24 Jun 2009 00:46:05 GMT]]></title><description><![CDATA[<p>*hochschieb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1731884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1731884</guid><dc:creator><![CDATA[Registrierwahn]]></dc:creator><pubDate>Wed, 24 Jun 2009 00:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to register methode on Wed, 24 Jun 2009 05:31:52 GMT]]></title><description><![CDATA[<p>Du könntest B noch in einen shared_ptr (aus tr1 bzw. boost) verpacken.</p>
<pre><code class="language-cpp">// B.h:
#include &lt;memory&gt;

struct B{
   int x;
}

typedef std::tr1::shared_ptr&lt;B&gt; B_PTR;
</code></pre>
<pre><code class="language-cpp">// A.h:

#include &quot;B.h&quot;

class A{
    B_PTR m_b;

    public:
    //...
    void Register(const B_PTR&amp; b){ m_b = b; }
    void tuWas(){ m_b-&gt;x = 123; }
}
</code></pre>
<pre><code class="language-cpp">// Irgendwo anders...

   //...

   B_PTR b(new B());  // B-Objekt existiert solange, wie es mind. eine Kopie von b gibt
   b-&gt;x = 0; // Jetzt ist [B-Objekt auf das b zeigt].x == 0

   //...

   A a;
   a.Register(b);
   a.tuWas(); // Jetzt ist [B-Objekt auf das b zeigt].x == 123

   // ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1731900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1731900</guid><dc:creator><![CDATA[Roger Wilco]]></dc:creator><pubDate>Wed, 24 Jun 2009 05:31:52 GMT</pubDate></item></channel></rss>