<?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[typedef &amp;quot;variablenabhängig&amp;quot;]]></title><description><![CDATA[<p>Hallo,</p>
<p>weiß jemand wie ich folgendes Problem am elegantesten lösen könnte:</p>
<p>1.) Es wird je nach Wert einer Variablen A eine von 5 Funktionen aufgerufen.</p>
<p>Ich habe das bisher nur über 5 Funktionen lösen können, weil jeweils ein definierter Typ &quot;MT&quot; anders (abhängig vom Wert der vorangegangenen Variable) definiert wird.</p>
<p>2.) Momentan steht z.B. in der aufgerufenen Funktion 1 :</p>
<p>typedef signed int MT;<br />
...</p>
<p>in Funktion 2:<br />
typedef double MT;<br />
...</p>
<p>und so weiter.</p>
<p>Es wäre schön, wenn es eine Lösung gäbe, die es ermöglicht, mit nur einer anstatt von 5 Funktionen diesen Typ &quot;MT&quot; anders zu definieren. Also wenn Variable A=... dann ist Typ &quot;MT&quot; als ... definiert).</p>
<p>Dank und Gruß<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/292550/typedef-quot-variablenabhängig-quot</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 20:03:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292550.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Sep 2011 14:55:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to typedef &amp;quot;variablenabhängig&amp;quot; on Mon, 12 Sep 2011 14:55:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>weiß jemand wie ich folgendes Problem am elegantesten lösen könnte:</p>
<p>1.) Es wird je nach Wert einer Variablen A eine von 5 Funktionen aufgerufen.</p>
<p>Ich habe das bisher nur über 5 Funktionen lösen können, weil jeweils ein definierter Typ &quot;MT&quot; anders (abhängig vom Wert der vorangegangenen Variable) definiert wird.</p>
<p>2.) Momentan steht z.B. in der aufgerufenen Funktion 1 :</p>
<p>typedef signed int MT;<br />
...</p>
<p>in Funktion 2:<br />
typedef double MT;<br />
...</p>
<p>und so weiter.</p>
<p>Es wäre schön, wenn es eine Lösung gäbe, die es ermöglicht, mit nur einer anstatt von 5 Funktionen diesen Typ &quot;MT&quot; anders zu definieren. Also wenn Variable A=... dann ist Typ &quot;MT&quot; als ... definiert).</p>
<p>Dank und Gruß<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118308</guid><dc:creator><![CDATA[TJF]]></dc:creator><pubDate>Mon, 12 Sep 2011 14:55:33 GMT</pubDate></item><item><title><![CDATA[Reply to typedef &amp;quot;variablenabhängig&amp;quot; on Mon, 12 Sep 2011 15:07:53 GMT]]></title><description><![CDATA[<p>Nach dem wenigen was du bisher preisgegeben hast, hört sich das nach einem Funktionstemplate an sowie einem switch/case ausdruck, der explizit je nach Parameter die verschiedenen Instanzen des Templates aufruft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118312</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 12 Sep 2011 15:07:53 GMT</pubDate></item><item><title><![CDATA[Reply to typedef &amp;quot;variablenabhängig&amp;quot; on Mon, 12 Sep 2011 15:11:28 GMT]]></title><description><![CDATA[<p>Du kannst zur Laufzeit keine neuen Typen erzeugen. Also muss jeder Wert von A für sich behandelt werden. Allerdings brauchst du nur eine Templatefunktion, wenn alle 5 Funktionen gleich definiert sind.</p>
<pre><code class="language-cpp">template &lt;typename MT&gt;
void func() {
    // Hier MT benutzen
}

void foo(int A) {
    switch (A) {
        case 1: func&lt;int&gt;(); break;
        case 2: func&lt;float&gt;(); break;
        case 2: func&lt;double&gt;(); break;
        // .......

        default: break;
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2118314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118314</guid><dc:creator><![CDATA[typename]]></dc:creator><pubDate>Mon, 12 Sep 2011 15:11:28 GMT</pubDate></item><item><title><![CDATA[Reply to typedef &amp;quot;variablenabhängig&amp;quot; on Mon, 12 Sep 2011 15:20:18 GMT]]></title><description><![CDATA[<p>Wow! Das isses!</p>
<p>Vielen Dank!<br />
Gruß<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118319</guid><dc:creator><![CDATA[TJF]]></dc:creator><pubDate>Mon, 12 Sep 2011 15:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to typedef &amp;quot;variablenabhängig&amp;quot; on Thu, 15 Sep 2011 15:38:11 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>jetzt war ich doch etwas voreilig. Weil es einleuchtend ausschaut und ich es nicht sofort testen konnte. Ich kriege es nicht gebacken. So schaut es aus:</p>
<pre><code class="language-cpp">int output( void *outputBuffer, void *inputBuffer, ...)
	{
		unsigned int i;
		typedef float TYPE;
		OutputData *oData = (OutputData*) data;
		TYPE *out = (TYPE *)outputBuffer;
		TYPE *buf = &amp;((TYPE *)oData-&gt;buffer)[oData-&gt;position];
		...
		...
	}

int main( int argc, char *argv[] )
	{
	... // oput wird hier übergeben. Davon abhängig ist die typedef float TYPE oben. Das kann dann also auch z.B. typedef double TYPE sein
		switch (oput)
		{
		case 1:
			try
			{
				openStream( ..., &amp;output, ... );
				...
			}
			break;
		case 2:
			...
	}
</code></pre>
<p>Die erste Funktion habe ich bisher mehrmals mit verschiedenen typedef xy TYPE eingesetzt und in switch/case entsprechend aufgerufen.</p>
<p>Vielleicht kann mir nochmal jemand auf die Sprünge helfen...</p>
<p>Dank und Gruß<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119806</guid><dc:creator><![CDATA[TJF]]></dc:creator><pubDate>Thu, 15 Sep 2011 15:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to typedef &amp;quot;variablenabhängig&amp;quot; on Thu, 15 Sep 2011 15:48:25 GMT]]></title><description><![CDATA[<p>BUÄRKS. void-Pointer und C-Casts und weiß der Henker was für Verbrechen wider die Wartbarkeit du da noch untergebracht hast. Warum versuchst du es nicht mit C++-Mitteln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119810</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 15 Sep 2011 15:48:25 GMT</pubDate></item><item><title><![CDATA[Reply to typedef &amp;quot;variablenabhängig&amp;quot; on Sun, 18 Sep 2011 07:49:23 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>BUÄRKS. void-Pointer und C-Casts und weiß der Henker was für Verbrechen wider die Wartbarkeit du da noch untergebracht hast. Warum versuchst du es nicht mit C++-Mitteln?</p>
</blockquote>
<p>Ich hätte es selbst nicht besser formulieren können... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>IRGENDWIE so sollte die Funktion im Endeffekt aussehen...:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
int output( T *outputBuffer, T *inputBuffer, ...){

    unsigned int i;
    OutputData *oData = reinterpret_cast&lt;OutputData*&gt;(data);
    T *out = reinterpret_cast&lt;T*&gt;(outputBuffer);
    T *buf = &amp;(reinterpret_cast&lt;T*&gt;(oData-&gt;buffer))[oData-&gt;position];
    ...
    ...
}
</code></pre>
<p>Edit: Die Casts sind alle unnötig...wie mir auffällt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120293</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 18 Sep 2011 07:49:23 GMT</pubDate></item><item><title><![CDATA[Reply to typedef &amp;quot;variablenabhängig&amp;quot; on Fri, 16 Sep 2011 19:39:02 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>BUÄRKS. void-Pointer und C-Casts und weiß der Henker was für Verbrechen wider die Wartbarkeit du da noch untergebracht hast. Warum versuchst du es nicht mit C++-Mitteln?</p>
</blockquote>
<p>Ich hätte es selbst nicht besser formulieren können... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>IRGENDWIE so sollte es eigentlich aussehen...:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
int output( T *outputBuffer, T *inputBuffer, ...){

    unsigned int i;
    OutputData *oData = reinterpret_cast&lt;OutputData*&gt;(data);
    T *out = reinterpret_cast&lt;T*&gt;(outputBuffer);
    T *buf = &amp;(reinterpret_cast&lt;T*&gt;(oData-&gt;buffer))[oData-&gt;position];
}
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /><br />
Der ursprüngliche Code ist wahrscheinlich Unfug. Das hier ist grober Unfug. Das Problem ist nämlich nicht die Syntax.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120295</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 16 Sep 2011 19:39:02 GMT</pubDate></item></channel></rss>