<?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[Wie funktionieren Proxy-Objekte?]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; buffer = Klasse.construct&lt;std::vector&lt;int&gt;&gt;(/* blabla */)(/* blabla */);
</code></pre>
<p>wie müsste die Klasse dafür aussehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257619/wie-funktionieren-proxy-objekte</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 07:40:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257619.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 31 Dec 2009 02:42:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Thu, 31 Dec 2009 02:42:30 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; buffer = Klasse.construct&lt;std::vector&lt;int&gt;&gt;(/* blabla */)(/* blabla */);
</code></pre>
<p>wie müsste die Klasse dafür aussehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830192</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 31 Dec 2009 02:42:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Thu, 31 Dec 2009 08:05:02 GMT]]></title><description><![CDATA[<p>Was hat das mit Proxy Objekten zu tun?<br />
Was soll die zweite (/* blabla */)?</p>
<pre><code class="language-cpp">class aKlasse{
public:
	template&lt;typename T&gt;
	T construct(){
		return T();
	}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1830207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830207</guid><dc:creator><![CDATA[quarkmitsenf]]></dc:creator><pubDate>Thu, 31 Dec 2009 08:05:02 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Thu, 31 Dec 2009 09:42:10 GMT]]></title><description><![CDATA[<p><a href="http://sourcemaking.com/design_patterns/proxy" rel="nofollow">http://sourcemaking.com/design_patterns/proxy</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830213</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 31 Dec 2009 09:42:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Thu, 31 Dec 2009 17:22:45 GMT]]></title><description><![CDATA[<p>Nö, die Klasse dafür müsste eher so aussehen:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class CtorProxy
{
public:
    T operator () ()
    {
        return T();
    }
};

class CtorProxyFactory
{
public:
    template &lt;class T&gt;
    CtorProxy&lt;T&gt; construct()
    {
        return CtorProxy&lt;T&gt;();
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1830379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830379</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 31 Dec 2009 17:22:45 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Thu, 31 Dec 2009 17:39:38 GMT]]></title><description><![CDATA[<p>Ehm ok, im Eifer der Nacht habe ich mich wohl falsch ausgedrückt. Ohne noch mehr Worte zu verlieren:</p>
<pre><code class="language-cpp">#include &lt;boost/interprocess/managed_shared_memory.hpp&gt; 
#include &lt;iostream&gt; 

int main() 
{ 
  boost::interprocess::shared_memory_object::remove(&quot;Highscore&quot;); 
  boost::interprocess::managed_shared_memory managed_shm(boost::interprocess::open_or_create, &quot;Highscore&quot;, 1024); 
  int *i = managed_shm.construct&lt;int&gt;(&quot;Integer&quot;)(99); 
  std::cout &lt;&lt; *i &lt;&lt; std::endl; 
  std::pair&lt;int*, std::size_t&gt; p = managed_shm.find&lt;int&gt;(&quot;Integer&quot;); 
  if (p.first) 
    std::cout &lt;&lt; *p.first &lt;&lt; std::endl; 
}
</code></pre>
<p>managed_shm.find&lt;int&gt;(&quot;Integer&quot;); sucht ja im Speicher und gibt irgendwas zurück (keine Ahnung was, soweit habe ich noch nicht gelesen). Also, wie müsste hier boost::interprocess::managed_shared__memory::find aussehen? (Finde die Doku sehr verwirrend).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830388</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 31 Dec 2009 17:39:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Thu, 31 Dec 2009 19:17:42 GMT]]></title><description><![CDATA[<p>Du meinst das aneinanderhängen via operator(). Das ist ziemlich simpel:</p>
<pre><code>Class Blah {
public:
   Blah&amp; operator() (Whatever we) 
   {
      // Tue was sinnvolles
      return *this;
   }

   // Ist im Grunde auch nichts anderes als
   Blah&amp; DoSomething (Whatever we)
   {
      // ...
      return *this
   }
   // Könnte man jetzt auch einfach aneinanderhängen:
   // blah.DoSomething(x).DoSomething(y).DoSomething(z);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1830417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830417</guid><dc:creator><![CDATA[BadWolf]]></dc:creator><pubDate>Thu, 31 Dec 2009 19:17:42 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Thu, 31 Dec 2009 19:31:19 GMT]]></title><description><![CDATA[<p>Nein, aber trotzdem Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830422</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 31 Dec 2009 19:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Thu, 31 Dec 2009 22:26:03 GMT]]></title><description><![CDATA[<p>naja, ziemlich genau so wie ich geschrieben habe.</p>
<pre><code class="language-cpp">struct ManagebObjectBase
{
    explicit ManagebObjectBase(char const* name) : m_name(name) {}
    virtual ~ManagebObjectBase() {}

    std::string const m_name; // müsste man hier nicht nochmal ablegen, wenn man ne std::map verwendet, aber das nochmal zu ändern ist mir jetzt zu doof
};

template &lt;class T&gt;
struct ManagebObject : ManagebObjectBase
{
    explicit ManagebObject(char const* name) :
        ManagebObjectBase(name),
        m_object() {}

    explicit ManagebObject(char const* name, T const&amp; t) :
        ManagebObjectBase(name),
        m_object(t) {}

    template &lt;class A1&gt;
    ManagebObject(char const* name, A1 const&amp; a1) :
        ManagebObjectBase(name),
        m_object(a1) {}

    template &lt;class A1, class A2&gt;
    ManagebObject(char const* name, A1 const&amp; a1, A2 const&amp; a2) 
        ManagebObjectBase(name),
        m_object(a1, a2) {}

    // ...

    T m_object;
};

std::map&lt;std::string, ManagedObjectBase*&gt; g_objects;

template &lt;class T&gt;
class CtorProxy
{
public:
    explicit CtorProxy(char const* name) : m_name(name) {}

    T* operator () ()
    {
        // vorher sollte man natürlich nochmal checken ob es nicht schon ein objekt mit dem namen gibt,
        // genauso fehlt natürlich das ganze &quot;interprocess&quot; zeugs, aber darum
        // geht's ja hier nicht wenn ich das richtig verstanden habe
        ManagedObject&lt;T&gt;* o = new ManagedObject&lt;T&gt;(m_name.c_str());
        g_objects.insert(std::make_pair(m_name, o));
        return &amp;o.m_object;
    }

    T* operator () (T const&amp; t)
    {
        ManagedObject&lt;T&gt;* o = new ManagedObject&lt;T&gt;(m_name.c_str(), t);
        g_objects.insert(std::make_pair(m_name, o));
        return &amp;o.m_object;
    }

    template &lt;class A1&gt;
    T* operator () (A1 const&amp; a1)
    {
        ManagedObject&lt;T&gt;* o = new ManagedObject&lt;T&gt;(m_name.c_str(), a1);
        g_objects.insert(std::make_pair(m_name, o));
        return &amp;o.m_object;
    }

    template &lt;class A1, class A2&gt;
    T* operator () (A1 const&amp; a1, A2 const&amp; a2)
    {
        ManagedObject&lt;T&gt;* o = new ManagedObject&lt;T&gt;(m_name.c_str(), a1, a2);
        g_objects.insert(std::make_pair(m_name, o));
        return &amp;o.m_object;
    }

    // ...

private:
    std::string const m_name;
};

class CtorProxyFactory
{
public:
    template &lt;class T&gt;
    CtorProxy&lt;T&gt; construct(char const* name)
    {
        return CtorProxy&lt;T&gt;(name);
    }
};
</code></pre>
<p>wie find() aussehen müsste sollte jetzt denke ich klar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830462</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 31 Dec 2009 22:26:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Fri, 01 Jan 2010 12:21:26 GMT]]></title><description><![CDATA[<p>Wie lang muss man eigentlich C++ programmieren, bis man sowas macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830554</guid><dc:creator><![CDATA[mkllt]]></dc:creator><pubDate>Fri, 01 Jan 2010 12:21:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktionieren Proxy-Objekte? on Fri, 01 Jan 2010 16:54:10 GMT]]></title><description><![CDATA[<p>mkllt schrieb:</p>
<blockquote>
<p>Wie lang muss man eigentlich C++ programmieren, bis man sowas macht?</p>
</blockquote>
<p>Sollte das jetzt ne Provokation sein? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830639</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Fri, 01 Jan 2010 16:54:10 GMT</pubDate></item></channel></rss>