<?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[Memberfunktionen gruppieren]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine relativ umfangreiche Klasse Graphics mit DirectX9 geschrieben.</p>
<p>Nun möchte ich einzelne Memberfunktionen gruppieren.</p>
<p>Im moment habe ich z.B. 3 Memberfunktionen<br />
CreateLightSource_Point(...)<br />
CreateLightSource_Directional(...)<br />
CreateLightSource_Spot(...)</p>
<p>und möchte daraus sowas wie</p>
<p>CreateLightSource.Point(...);<br />
CreateLightSource.Directional(...);<br />
CreateLightSource.Spot(...);</p>
<p>machen. Damit mir unter anderem Intellisense nur noch CreateLightSource anzeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285258/memberfunktionen-gruppieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 10:27:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285258.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 Apr 2011 09:18:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 09:18:12 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine relativ umfangreiche Klasse Graphics mit DirectX9 geschrieben.</p>
<p>Nun möchte ich einzelne Memberfunktionen gruppieren.</p>
<p>Im moment habe ich z.B. 3 Memberfunktionen<br />
CreateLightSource_Point(...)<br />
CreateLightSource_Directional(...)<br />
CreateLightSource_Spot(...)</p>
<p>und möchte daraus sowas wie</p>
<p>CreateLightSource.Point(...);<br />
CreateLightSource.Directional(...);<br />
CreateLightSource.Spot(...);</p>
<p>machen. Damit mir unter anderem Intellisense nur noch CreateLightSource anzeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050463</guid><dc:creator><![CDATA[Amino]]></dc:creator><pubDate>Sun, 17 Apr 2011 09:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 09:20:55 GMT]]></title><description><![CDATA[<p>packd as ganze in eine innere klasse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050464</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 17 Apr 2011 09:20:55 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 09:22:02 GMT]]></title><description><![CDATA[<p>Neue Klasse mit den entsprechenden Membern und dann instanzieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050465</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 17 Apr 2011 09:22:02 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 09:22:34 GMT]]></title><description><![CDATA[<p>Hier stand Müll</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050466</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 17 Apr 2011 09:22:34 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 09:28:27 GMT]]></title><description><![CDATA[<p>Wenn die Schnittstelle gleich ist, kannst du die Methoden auch zu einer zusammenfassen.</p>
<pre><code class="language-cpp">enum LightSourceType
{
    Point,
    Directional,
    Spot,
};

/* Rückgabetyp */ CreateLightSource(LightSourceType type, /* andere Parameter */);
</code></pre>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Hier stand Müll</p>
</blockquote>
<p>Kommt bei dir in letzter Zeit öfter vor... Vielleicht nicht immer so übereifrig drauf los posten <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/2050470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050470</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 17 Apr 2011 09:28:27 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 09:50:46 GMT]]></title><description><![CDATA[<p>Das mit dem Enum finde ich nicht so gut, weil die einzelnen Funktionen unterschiedliche Parameter haben. Sonst könnte ich auch gleich die Funktion nehmen die DirectX9 anbietet, die macht es so wie Nexus schrieb.</p>
<p>Ich bekomm das einfach nicht gebacken.</p>
<p>Ich habe es jetzt so innerhalb der Graphics geschrieben:</p>
<pre><code class="language-cpp">struct CreateLightSource {
		const HRESULT directional(const D3DXVECTOR3&amp; direction, float r, float g, float b, float a) const;
		const HRESULT spot() const;
		const HRESULT point() const;
	};
public:
	CreateLightSource createLightSource;
</code></pre>
<p>und so sieht es in der .cpp aus:</p>
<pre><code class="language-cpp">const HRESULT CGraphics::SCreateLightSource::directional(const D3DXVECTOR3&amp; direction, float r, float g, float b, float a) const {
	//...

	D3DDevice-&gt;SetLight(0, &amp;light);//Hier mault der compiler, weil D3DDevice nicht deklariert ist...dann so probiert:
	CGraphics::D3DDevice-&gt;SetLight(0, &amp;light);//so geht es auch nicht, ich nehme an weil D3DDevice nicht static ist.
	return D3D_OK;
}
</code></pre>
<p>Ich komme also nicht an die privaten member von CGraphics ran...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050479</guid><dc:creator><![CDATA[Amino]]></dc:creator><pubDate>Sun, 17 Apr 2011 09:50:46 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 09:54:12 GMT]]></title><description><![CDATA[<p>Nochmals zum Sicherstellen:</p>
<p>Du machst dir den ganzen Aufwand nur, weil dir die Syntax nicht passt bzw. IntelliSense die Funktionen nicht ideal darstellt? Oder gibt es auch gute Gründe für die Umstellung?</p>
<p>Ich würde meinen Code nicht primär nach IntelliSense ausrichten. Vor allem nicht, wenn er dadurch komplexer und weniger wartbar wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050481</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 17 Apr 2011 09:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 09:58:10 GMT]]></title><description><![CDATA[<p>Da müsstest du deinem Hilfs-Struct einen Verweis auf das umgebende Objekt mitgeben und im Konstruktor füllen:</p>
<pre><code class="language-cpp">class CGraphics
{
    CGraphics(...) : createLightSource(this), ... {}
    struct CreateLightSource {
        const HRESULT directional(const D3DXVECTOR3&amp; direction, float r, float g, float b, float a) const;
        const HRESULT spot() const;
        const HRESULT point() const;

        CreateLightSource(CGraphics* pUser) : User(pUser) {}
    private:
        CGraphics* User;
    };
public:
    CreateLightSource createLightSource;
}
</code></pre>
<p>(allerdings braucht die Klasse dann auch angepasste Kopier-Operationen, wenn die hier überhaupt sinnvoll sind)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050484</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 17 Apr 2011 09:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 10:07:37 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nochmals zum Sicherstellen:</p>
<p>Du machst dir den ganzen Aufwand nur, weil dir die Syntax nicht passt bzw. IntelliSense die Funktionen nicht ideal darstellt? Oder gibt es auch gute Gründe für die Umstellung?</p>
<p>Ich würde meinen Code nicht primär nach IntelliSense ausrichten. Vor allem nicht, wenn er dadurch komplexer und weniger wartbar wird.</p>
</blockquote>
<p>Ja, der Grund ist die &quot;End-Benutzer&quot;-Syntax. Ich finde Struktur in die Funktionen Rein zubringen sinnvoll...</p>
<p>Zudem bin ich davon ausgegangen, dass die Gruppierung nicht so kompliziert ausfällt.<br />
Geht da nicht was mit Namespaces?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>, danke ich benutze es mal testweise, aber wenn das so umständlich ist Memberfunktionen zu gruppieren, dann überleg ich mir das nochmal..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050488</guid><dc:creator><![CDATA[Amino]]></dc:creator><pubDate>Sun, 17 Apr 2011 10:07:37 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 10:09:13 GMT]]></title><description><![CDATA[<p>Amino schrieb:</p>
<blockquote>
<p>Geht da nicht was mit Namespaces?</p>
</blockquote>
<p>Namensbereiche sind zum Modularisieren da. Und innerhalb von Klassen sowieso nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050489</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 17 Apr 2011 10:09:13 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 10:13:10 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wenn die Schnittstelle gleich ist, kannst du die Methoden auch zu einer zusammenfassen.</p>
<pre><code class="language-cpp">enum LightSourceType
{
    Point,
    Directional,
    Spot,
};

/* Rückgabetyp */ CreateLightSource(LightSourceType type, /* andere Parameter */);
</code></pre>
</blockquote>
<p>Selbiges stand in meinem Post, aber wegen des selben Interfaces habe ich es herausgelöscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050493</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 17 Apr 2011 10:13:10 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 10:52:58 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Namensbereiche sind zum Modularisieren da.</p>
</blockquote>
<p>Nö, die sind dafür da Namenskonflikte zu vermeiden. Modularisierung unterstützen oder gar erzwingen tun sie erst recht nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050514</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 17 Apr 2011 10:52:58 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 11:41:11 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Nö, die sind dafür da Namenskonflikte zu vermeiden.</p>
</blockquote>
<p>Nein. Zur Vermeidung von Namenskonflikten reichen auch Präfixe. Namensräume können mehr als das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050534</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 17 Apr 2011 11:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Sun, 17 Apr 2011 20:11:39 GMT]]></title><description><![CDATA[<p>@Amino: Mir ist noch ein anderer Gedanke gekommen: Wenn du die Parameter sinnvoll zuordnen kannst, wäre auch Funktions-Überladung eine Alternative. D.h. du hast mehrere Funktionen <code>CreateLightSource(...)</code> und kannst an den Parametern erkennen, welche davon verwendet werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050806</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 17 Apr 2011 20:11:39 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Mon, 18 Apr 2011 07:33:59 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Artchi schrieb:</p>
<blockquote>
<p>Nö, die sind dafür da Namenskonflikte zu vermeiden.</p>
</blockquote>
<p>Nein. Zur Vermeidung von Namenskonflikten reichen auch Präfixe. Namensräume können mehr als das.</p>
</blockquote>
<p>Dann erzähl mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050897</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 18 Apr 2011 07:33:59 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Mon, 18 Apr 2011 07:49:46 GMT]]></title><description><![CDATA[<p>namespaces können auch kapseln, wenn sie anonym sind.</p>
<p>Wieso muss CGraphics eigentlich die Lichter erstellen? Ich fände so was intuitiv:</p>
<pre><code class="language-cpp">CGraphics cg;
cg.AddLight(SpotLight(a, b, c));
</code></pre>
<p>Oder gibt es keine Lichtklassen? Fänd ich aber nicht unlogisch. Was macht denn &quot;CreateLightOfKindWhatsoever&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050908</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 18 Apr 2011 07:49:46 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Mon, 18 Apr 2011 12:03:08 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Dann erzähl mal.</p>
</blockquote>
<p>Fällt dir kein Vorteil von Namensräumen gegenüber Präfixen ein?</p>
<p>Ein paar Stichworte: ADL, <code>using</code> -Deklaration und -Direktive, Namespace Aliases, Unnamed Namespaces, saubere Bezeichner innerhalb des Namensraums.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051058</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 18 Apr 2011 12:03:08 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktionen gruppieren on Mon, 18 Apr 2011 12:23:20 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Artchi schrieb:</p>
<blockquote>
<p>Dann erzähl mal.</p>
</blockquote>
<p>Fällt dir kein Vorteil von Namensräumen gegenüber Präfixen ein?</p>
<p>Ein paar Stichworte: ADL, <code>using</code> -Deklaration und -Direktive, Namespace Aliases, Unnamed Namespaces, saubere Bezeichner innerhalb des Namensraums.</p>
</blockquote>
<p>Ehm, ich wollte gerne was zum Beitrag der Modularisierung durch Namespaces wissen. Die Namenskonfliktvermeidung habe ich ja selber genannt. Vielleicht Unnamed Namespaces würde ich eine minimale Rolle in der Modularisierung zusprechen. Alles andere hat nur was mit Namen zu tun.</p>
<p>Aber ich wollte bzgl. Modularisierung wissen. Weil da fällt mir nichts ein, wo Namespaces was dafür tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051074</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 18 Apr 2011 12:23:20 GMT</pubDate></item></channel></rss>