<?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[template arrays]]></title><description><![CDATA[<p>gibt es nicht die möglichkeit einem template ein array als argument zu<br />
übergeben? das array bekommt dabei noch die größe übergeben.</p>
<p>ich hab glaube ich sowas schonmal gesehen</p>
<pre><code class="language-cpp">template&lt;class T, int N, (T &amp;array)[N]&gt;
</code></pre>
<p>sowas in der richtung gabs doch mal. (kann sein das das für was anderes war.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/249326/template-arrays</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 13:27:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/249326.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Sep 2009 00:37:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 00:37:23 GMT]]></title><description><![CDATA[<p>gibt es nicht die möglichkeit einem template ein array als argument zu<br />
übergeben? das array bekommt dabei noch die größe übergeben.</p>
<p>ich hab glaube ich sowas schonmal gesehen</p>
<pre><code class="language-cpp">template&lt;class T, int N, (T &amp;array)[N]&gt;
</code></pre>
<p>sowas in der richtung gabs doch mal. (kann sein das das für was anderes war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1773019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773019</guid><dc:creator><![CDATA[die vorlage]]></dc:creator><pubDate>Sun, 06 Sep 2009 00:37:23 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 08:38:59 GMT]]></title><description><![CDATA[<p>In deinem Fall könnte eine mögliche Antwort so aussehen:</p>
<pre><code class="language-cpp">template&lt;class T, int N, class Array = vector&lt;T&gt;&gt; 	
class XY;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1773072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773072</guid><dc:creator><![CDATA[DeepCopy]]></dc:creator><pubDate>Sun, 06 Sep 2009 08:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 08:48:01 GMT]]></title><description><![CDATA[<p>Meinst du:</p>
<pre><code class="language-cpp">template&lt;class T, int N&gt;
void foo(T (&amp;array)[N])
{}
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1773078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773078</guid><dc:creator><![CDATA[Ryuzaki]]></dc:creator><pubDate>Sun, 06 Sep 2009 08:48:01 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 11:23:53 GMT]]></title><description><![CDATA[<p>genau das meinte ich. (brauch ich nicht oft deswegen habichs vergessen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )</p>
<p>allerdings löst das mein problem nicht ganz.</p>
<p>das hauptproblem ist die übergabe eines literals als template-parameter.</p>
<pre><code class="language-cpp">tepmlate &lt;const char *name&gt;
</code></pre>
<p>das funktioniert allerdings nicht mit werten, die nicht exportierbar sind.</p>
<p>(warum eigentlich, mit z.b. int gehts auch (func&lt;42&gt;) )</p>
<p>genau das möchte ich aber, sprich den string an die template-klasse<br />
übergeben, ohne den ctor oder eine memberfunktion zu benutzen.</p>
<pre><code class="language-cpp">class test
{
public:
    class2&lt;&quot;test&quot;&gt; value;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1773182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773182</guid><dc:creator><![CDATA[die vorlage]]></dc:creator><pubDate>Sun, 06 Sep 2009 11:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 11:28:23 GMT]]></title><description><![CDATA[<p>Wieso brauchst du das? Wieso muss der Wert zur Compilezeit bekannt sein, und was spricht gegen den Konstruktor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1773186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773186</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Sep 2009 11:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 13:11:47 GMT]]></title><description><![CDATA[<p>es ist einfacher wenn man den namen direkt im template angeben kann, als im<br />
ctor erstmal alle member so zu initialisieren. brauchen tue ich das für einen<br />
serialisierer wo es sehr praktisch wäre, den member mit namen anzusprechen,<br />
statt mit dem typ.</p>
<p>mithilfe von ein paar (bösen) makros kann man das ganze gut implementieren, ohne<br />
das der benutzer vergisst, den ctor anzupassen (ok, gäbe eh einen kompilerfehler,<br />
aber schön sieht das nicht aus).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1773250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773250</guid><dc:creator><![CDATA[die vorlage]]></dc:creator><pubDate>Sun, 06 Sep 2009 13:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 13:20:13 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename T&gt;
struct class2
{
    void do_something()
    {
        std::cout &lt;&lt; T::name;
    }
};
class test
{
public:
    static const char* name;
    class2&lt;test&gt; value;
};

const char* test::name = &quot;test&quot;;
</code></pre>
<p>Vielleicht so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1773255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773255</guid><dc:creator><![CDATA[Ryuzaki]]></dc:creator><pubDate>Sun, 06 Sep 2009 13:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 14:04:08 GMT]]></title><description><![CDATA[<p>nicht ganz, der name ist nicht der klassenname (dummes beispiel von mir), sondern<br />
der der variablen.</p>
<pre><code class="language-cpp">class c
{
public:
    property&lt;float, &quot;m_value&quot;&gt; m_value;

    // als makro:

    Property(float, m_value);
};
</code></pre>
<p>sowas wäre ideal.</p>
<p>immer alle werte im ctor oder außerhalb der klasse zu initalisieren ist kein<br />
schönes design</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1773276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773276</guid><dc:creator><![CDATA[die vorlage]]></dc:creator><pubDate>Sun, 06 Sep 2009 14:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 14:16:38 GMT]]></title><description><![CDATA[<p>Wie willst du auf das Property zugreifen oder reicht nur das setzen oder nur definieren? Und warum willst du ueberhaupt Properties?</p>
<blockquote>
<p>immer alle werte im ctor oder außerhalb der klasse zu initalisieren ist kein schönes design</p>
</blockquote>
<p>Gib mal ein Beispiel, wahrscheinlich hast du nur schlecht designed. <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="🙂"
    /> Auch mussen sie irgendwo initialisiert werden, arbeit spart man sich kaum. Als Alternative bieten sich noch Initialisierungslisten (Konstruktor) an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1773277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773277</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sun, 06 Sep 2009 14:16:38 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 15:10:34 GMT]]></title><description><![CDATA[<p>ok <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>
<p>ich möchte eine methode entwickeln um klassen und ihre member zu seralisieren.<br />
dazu bietet sich XML an. normalerweise müsste jede klasse eine serialsie methode<br />
haben. das möchte ich vermeiden. dazu gibt es eine template klasse &quot;Property&quot;,<br />
von der man objekte anlegen kann, die sich (fast) genau wie die normalen<br />
datentypen verwenden lassen. damit das aber 1. vernünftig lesbar ist und 2.<br />
erweiterbar ist, möchte ich den namen jedes members als kennung verwenden.</p>
<p>die frage ist nur: wie komme ich an den namen ohne ihn im ctor einzeln hin-<br />
scheiben zu müssen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1773303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773303</guid><dc:creator><![CDATA[die vorlage]]></dc:creator><pubDate>Sun, 06 Sep 2009 15:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to template arrays on Sun, 06 Sep 2009 21:25:28 GMT]]></title><description><![CDATA[<p>die vorlage schrieb:</p>
<blockquote>
<p>normalerweise müsste jede klasse eine serialsie methode<br />
haben. das möchte ich vermeiden.</p>
</blockquote>
<p>Dann würden sich wahrscheinlich freie Funktionen empfehlen (oder je nachdem eine separate Klasse). Ich würde diese Arbeit nämlich eher auslagern und nicht in der Klasse selbst machen - zum Beispiel wäre es von Vorteil, wenn nicht jedes Objekt einen grossen Overhead für die Serialisierung hätte. Dann kommt dir auch zugute, dass du bei einer Anpassung der Serialisierung nicht alle Klassen abändern musst.</p>
<p>Du musst ja beim Speichern/Laden so oder so direkt über den Namen auf die Member zugreifen, von daher kannst du dir den String dazu erstellen. Zum Beispiel:</p>
<pre><code class="language-cpp">// Zu serialisierende Klasse
class MyClass
{
    public:
        // ...
    private:
        float a;         // Member ganz normal
        OtherClass b;
};

// Hier ist Write() eine Funktion, die etwas in eine Datei schreibt (ich kenne 
// deinen Code schliesslich nicht genau) - der Einfachheit halber als Template.
// Das kannst du natürlich entsprechend an deine Schnittstelle anpassen...
template &lt;typename T&gt;
void Write(const T&amp; var, const char* description);

// Makro für übersichtlichere Schreibweise
#define WRITE(CLASS, MEMBER) Write(CLASS.MEMBER, #MEMBER)

// Deine freie Serialisierungsfunktion
void Serialize(const MyClass&amp; c)
{
    WRITE(c, a);
    WRITE(c, b);
}
</code></pre>
<p>Das ist jetzt einfach mal ein spontaner Vorschlag, ich weiss nicht genau, wie das in dein Design passt. Aber vielleicht hilfts dir ja... <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/1773523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1773523</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Sep 2009 21:25:28 GMT</pubDate></item></channel></rss>