<?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[meta-template prog frage]]></title><description><![CDATA[<p>Also ich habe folgendes Problem,<br />
ich habe eine Classe welche Daten binär in eine Datei schreiben kann,</p>
<p>dazu habe ich eine abstrakte bassisklasse erstellt</p>
<pre><code>class BinDataItem
{
public :	
/** this  ctor must be called by all base-classes */
BinDataItem(DataType dt) { m_id = dt; };
privat :
BinDataItem();
}
</code></pre>
<p>nun muss man sowas wie ein plugin schreiben, welches die Konvertierung vornimmt<br />
z.B.</p>
<pre><code>class binString : public BinDataItem
{
public :

binString() : BinDataItem(BinString) {}
.
.
.
}
</code></pre>
<p>dann habe ich eine enum, in der alle unterstüzten Datentypen drinstehen</p>
<p>enum DataType<br />
{<br />
Double,<br />
DoubleVec,<br />
BinString,<br />
NotSupported<br />
};</p>
<p>nun kann man neue Klassen erstellen, von BinDataItem ableiten, und kann diese<br />
in die Binärdatei schreiben, das ist mir aber zu blöd,<br />
da man in der enum eine ID für den Datentyp eintragen muss, und dann muss man noch den Base-ctor mit der ID aufrufen.</p>
<p>gibt es eine Möglichkeit die enum automatisch zu füllen?<br />
Was ich bräuchte wäre :<br />
ein meta-programm was jeder Klasse eine unique-id vergibt,<br />
aber ich weiss nichtmal wo ich da anfangen soll</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199262/meta-template-prog-frage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 12:52:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199262.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Nov 2007 14:15:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to meta-template prog frage on Fri, 30 Nov 2007 14:17:18 GMT]]></title><description><![CDATA[<p>Also ich habe folgendes Problem,<br />
ich habe eine Classe welche Daten binär in eine Datei schreiben kann,</p>
<p>dazu habe ich eine abstrakte bassisklasse erstellt</p>
<pre><code>class BinDataItem
{
public :	
/** this  ctor must be called by all base-classes */
BinDataItem(DataType dt) { m_id = dt; };
privat :
BinDataItem();
}
</code></pre>
<p>nun muss man sowas wie ein plugin schreiben, welches die Konvertierung vornimmt<br />
z.B.</p>
<pre><code>class binString : public BinDataItem
{
public :

binString() : BinDataItem(BinString) {}
.
.
.
}
</code></pre>
<p>dann habe ich eine enum, in der alle unterstüzten Datentypen drinstehen</p>
<p>enum DataType<br />
{<br />
Double,<br />
DoubleVec,<br />
BinString,<br />
NotSupported<br />
};</p>
<p>nun kann man neue Klassen erstellen, von BinDataItem ableiten, und kann diese<br />
in die Binärdatei schreiben, das ist mir aber zu blöd,<br />
da man in der enum eine ID für den Datentyp eintragen muss, und dann muss man noch den Base-ctor mit der ID aufrufen.</p>
<p>gibt es eine Möglichkeit die enum automatisch zu füllen?<br />
Was ich bräuchte wäre :<br />
ein meta-programm was jeder Klasse eine unique-id vergibt,<br />
aber ich weiss nichtmal wo ich da anfangen soll</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412960</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Fri, 30 Nov 2007 14:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to meta-template prog frage on Fri, 30 Nov 2007 16:50:21 GMT]]></title><description><![CDATA[<p>Der Ansatz mittels enums und Klassenhierarchie ist meistens nicht so gut (wie du ja selber schon festgestellt hast, da man nämlich die enums nicht automatisch erzeugen kann).</p>
<p>Vielleicht solltest du für das Schreiben von binären Daten einen ähnlichen Ansatz wählen wie das Ausgeben von Streams, d.h.</p>
<pre><code class="language-cpp">class BinStream
{
   // ...
};

BinStream&amp; operator&lt;&lt;(BinStream&amp; bs, double);
BinStream&amp; operator&lt;&lt;(BinStream&amp; bs, int);
BinStream&amp; operator&lt;&lt;(BinStream&amp; bs, const char *);
// ...

BinStream &lt;&lt; 1.23 &lt;&lt; &quot;Hello&quot; &lt;&lt; 42;
</code></pre>
<p>Bei Interesse daran kann ich mal eine Klasse posten, die ich vor ein paar Jahren mal geschrieben habe (für das Schreiben/Lesen von Binärdaten in den Speicher).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413065</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Fri, 30 Nov 2007 16:50:21 GMT</pubDate></item><item><title><![CDATA[Reply to meta-template prog frage on Sat, 01 Dec 2007 01:14:25 GMT]]></title><description><![CDATA[<p>der Ansatz ist nett, leider habe ich als Anforderung an die binär-datei,<br />
das ein random-access auf einzelne elemente möglich ist<br />
(ohne die ganze datei durchzuparsen)</p>
<p>deshalb besteht meine datei zur Zeit aus</p>
<pre><code>Header
</code></pre>
<pre><code>Daten
</code></pre>
<pre><code>Footer
</code></pre>
<p>der Header hat eine konstante Grösse in Bytes, im Footer steht sowas wie ein<br />
Inhaltsverzeichniss der Datei.<br />
Nämlich : ID des Datentypes, und die Grösse des Datensatz,<br />
und mit der ID kann ich dann bestimmen, welche &quot;Dekodierungsklasse&quot;<br />
diesen Datentyp von raw-byte zurückkonvertieren kann.</p>
<p>Ich werde wohl noch ein wenig nachdenken müssen.<br />
Und bin für jede Anregungen dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413219</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Sat, 01 Dec 2007 01:14:25 GMT</pubDate></item><item><title><![CDATA[Reply to meta-template prog frage on Sat, 01 Dec 2007 10:18:27 GMT]]></title><description><![CDATA[<p>Wenn du die ID wirklich extern brauchst (in der Datei), dann kommst du wohl um die enums nicht drumherum.<br />
Wobei es bei größeren Projekten auch nervig sein kann, wenn man die enums erweitert und dann alle abhängigen Klassen neu kompiliert werden müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413273</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 01 Dec 2007 10:18:27 GMT</pubDate></item></channel></rss>