<?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[Cast oder Templates]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>Ich will mir aus einer Orginal-Bitmap alle Pixel eines Patterns (2. BM, 8 BPP) rauskopieren. Das Orginal kann jedoch 8,16,24,od 32 BPP haben.<br />
Kann man nun eine allgemeingültige Funktion schreiben, die den Typ<br />
(LPBYTE,LPWORD,LPTRIPLE,LPQUAD) automatisch ermittelt und damit castet?<br />
Ich hoffe ich habe mich verständlich ausgedrückt.</p>
<pre><code class="language-cpp">template &lt;typename T&gt; T* convert (T* Dst,T* Org,LPBYTE Pat);
...

Ich will also nicht schreiben:
if (Org-&gt;bpp==24) convert ((LPTRIPLE)Dst,(LPTRIPLE)Org,Pat);
else if (Dst-&gt;bpp==32) convert ((LPQUAD(Dst,(LPQUAD)Org,Pat);
...
</code></pre>
<p>Die Daten der Org-Bitmap liegen ja immer gleich vor und ich habe eben keine Typenangabe, sondern nur die BitsperPixel-Info.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/118126/cast-oder-templates</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 09:17:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118126.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Aug 2005 13:11:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Cast oder Templates on Mon, 15 Aug 2005 14:31:52 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>Ich will mir aus einer Orginal-Bitmap alle Pixel eines Patterns (2. BM, 8 BPP) rauskopieren. Das Orginal kann jedoch 8,16,24,od 32 BPP haben.<br />
Kann man nun eine allgemeingültige Funktion schreiben, die den Typ<br />
(LPBYTE,LPWORD,LPTRIPLE,LPQUAD) automatisch ermittelt und damit castet?<br />
Ich hoffe ich habe mich verständlich ausgedrückt.</p>
<pre><code class="language-cpp">template &lt;typename T&gt; T* convert (T* Dst,T* Org,LPBYTE Pat);
...

Ich will also nicht schreiben:
if (Org-&gt;bpp==24) convert ((LPTRIPLE)Dst,(LPTRIPLE)Org,Pat);
else if (Dst-&gt;bpp==32) convert ((LPQUAD(Dst,(LPQUAD)Org,Pat);
...
</code></pre>
<p>Die Daten der Org-Bitmap liegen ja immer gleich vor und ich habe eben keine Typenangabe, sondern nur die BitsperPixel-Info.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852553</guid><dc:creator><![CDATA[denali]]></dc:creator><pubDate>Mon, 15 Aug 2005 14:31:52 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Mon, 15 Aug 2005 13:24:04 GMT]]></title><description><![CDATA[<p>Unschön. Ohne jetzt genauer auf die umstände einzugehen, gibt es mehrere mögl. Ein einfacher ansatz wäre so in der art:</p>
<pre><code class="language-cpp">enum typ{typ1,typ2,typ3};
union ergebnis
{
    typ1_t t1;
    typ2_t t2;
    typ3_t t3;
};
std::pair&lt;typ,ergebnis&gt;funktion()
{
    std::pair&lt;typ,ergebnis&gt; ret;
    //mach irgendwas und gib was zurück, z.b.:
    ret.first=typ2;
    ret.second.t2=typ2_t();
};
</code></pre>
<p>Der Aufrufer kann dann je nach typ das richtige element auslesen. Nachteil von unions ist aber, dass sie nur für pods funktionieren. Außerdem sollte bei typumschaltungen die alarmglucke schrillen, das klingt sehr nach virtuellen funktionen oder zumindest überladung -&gt; visitor:</p>
<pre><code class="language-cpp">template&lt;class visitor&gt;void mach_was(visitor v)
{
    if(muss_typ1_t_zurueckg)
        v(typ1_t());
    if(muss_typ2_t_zurueckg)
        v(typ2_t());
    //...
};

//ein visitor kann z.B. so auss.:
struct m_visitor
{
    void operator()(typ1_t){};
    //...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/852565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852565</guid><dc:creator><![CDATA[ness]]></dc:creator><pubDate>Mon, 15 Aug 2005 13:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Mon, 15 Aug 2005 13:32:31 GMT]]></title><description><![CDATA[<p>Wenn du nur die Daten kopieren willst, dann ist es doch egal wie groß ein Pixel ist, kopiere einfach das gesamte Bild byteweise...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852575</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 15 Aug 2005 13:32:31 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Mon, 15 Aug 2005 13:42:27 GMT]]></title><description><![CDATA[<p>nein, es geht nicht einfach nur ums kopieren. Das war nur ein einfaches Beispiel für die Problematik generell, die immer wieder auftaucht. Mal will ich die Pixel verodern/unden/xoren, mal den Betrag errechnen, mal mit Farbwerten jonglieren...<br />
Und halt jedes mal die blöde Abfrage, welchen Typ die Org-BM hat.<br />
An unions hatte ich auch schon gedacht, aber das erscheint mir auch nicht sehr viel einfacher.<br />
Ich bräuchte halt sowas wie:</p>
<pre><code>T Gib_Typ_zurück(int bits)
{
  if (bits==8) return LPBYTE;
  else if (bits==16) return LPWORD;
  else if ..
}
</code></pre>
<p>Aber das geht natürlich logischerweise so nicht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852585</guid><dc:creator><![CDATA[denali]]></dc:creator><pubDate>Mon, 15 Aug 2005 13:42:27 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Mon, 15 Aug 2005 14:02:20 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class wrapping_base
{
private:
    static std::map&lt;std::string,std::list&lt;wrapping_base*&gt; &gt;pool;
    std::string id;
public:
    wrapping_base(const std::string&amp; i):id(i){};
    virtual wrapping_base* clone()=0;
    virtual operator+=(const wrapping_base&amp;)=0;
    operator+(const wrapping_base&amp; o)
    {
        mapping_base* pnmb=this-&gt;clone();
        pool[id].merge(std::list&lt;wrapping_base*&gt;(1,pnmb));
        (*pnmb)+=*o;
        return *pnmb;
    };
    //...
    virtual ~mapping_base()    //wird der auch aufgerufen, wenn es eine abgeleitete klasse ist?
    {
        struct deleter
        {
            void operator()(wrapping_base* wb){delete wb;};
        };
        std::for_each(pool[id].begin(),pool[id].end(),deleter());
    }
};
</code></pre>
<p>Vielleicht als sehr eingeschränkter/gehackter ansatz? Ich weiß net mal ob sowas überhaupt funktionieren kann, ist mir grad so eingefallen...<br />
/edit: wenn ichs mir jetzt noch mal ansehe, ist irgendwie müll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852595</guid><dc:creator><![CDATA[ness]]></dc:creator><pubDate>Mon, 15 Aug 2005 14:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Mon, 15 Aug 2005 14:18:53 GMT]]></title><description><![CDATA[<p>puuuuh..., da muss ich erst mal ein bisschen grübeln drüber. Ich fange gerade erst so mit der STL und Templates an (Daher auch meine dummen Fragen). Sachen wie maps und pairs hab ich zwar schon mal gehört, aber das wars dann auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852604</guid><dc:creator><![CDATA[denali]]></dc:creator><pubDate>Mon, 15 Aug 2005 14:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Wed, 17 Aug 2005 07:33:47 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Ich denke, ich hab jetzt eine einfache <strong>und</strong> elegante Lösung gefunden.<br />
Warum einfach, wenns auch kompliziert geht:-) Damit sind alle Möglichkeiten<br />
mit max. 4 Variablen und einer veränderlichen Klasse abgedeckt. Die Abfrage<br />
selbst läuft zur Compile-Zeit.</p>
<pre><code class="language-cpp">//im Header

#define FP4(f,bpp,Par1,Par2,Par3,Par4)\ 
(bpp==8)?f&lt;BYTE&gt;(Par1,Par2,Par3,Par4):\
(bpp==24)?f&lt;CTriple&gt;(Par1,Par2,Par3,Par4):\
(bpp==32)?f&lt;CQuad&gt;(Par1,Par2,Par3,Par4):\
f&lt;WORD&gt;(Par1,Par2,Par3,Par4)

#define FP3(f,bpp,Par1,Par2,Par3)\
(bpp==8)?f&lt;BYTE&gt;(Par1,Par2,Par3):\
(bpp==24)?f&lt;CTriPle&gt;(Par1,Par2,Par3):\
(bpp==32)?f&lt;CQuad&gt;(Par1,Par2,Par3):\
f&lt;WORD&gt;(Par1,Par2,Par3)

.... Analog für alle Fälle FP2, FP1 und FP  

// in der .cpp-Datei

template&lt;class T&gt; void T_OrgImg (void* Dst,void* Org,LPBYTE Pat,int size)
{  for (int i=0;i&lt; size;i++) if (*(Pat+i)) *((T*)Dst+i)= *((T*)Org+i); }

LPIMG CImg::OrgImg (LPIMG Org)
{
  Dst= DstImg(0,Org-&gt;bpp); // Erstellt ein leeres Image wie Org
  FP4(T_OrgImg,Org-&gt;bpp,Dst-&gt;Data,Org-&gt;Data,Data,Area); //Template-Aufruf
  return Dst;
}

Auch z.B. ein Flip ist dann für alle Varianten schnell implementiert:

void CImg::Flip (int type)
{ 
  if ((type&amp;FLIP_BOTH)==FLIP_BOTH) FP2(Reverse,bpp,Data,Area);
  int y,pitch=GetPitch(),pos1=0,pos2=Size-pitch;
  else if ((type&amp;FLIP_VERT)==FLIP_VERT) 
    for (int i=0;i&lt;Dy;i++) FP2(Reverse,bpp,Data+i*pitch,Dx);
  else if ((type&amp;FLIP_HORZ)==FLIP_HORZ) {
    LPBYTE Tmp = new BYTE[Size];
    memcpy (Tmp,Data,Size);
    for (y=0;y&lt;Dy;y++) {
      memcpy (Data+pos1,Tmp+pos2,pitch);
      pos1+=pitch; pos2-=pitch;
    }
    delete[] Tmp;
  }
}
</code></pre>
<p>Das Template muss nicht im Header stehen, da es nur intern aufgerufen wird. Die Definition der Klassenfunktion ist kurz und bündig und alles ist paletti!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853430</guid><dc:creator><![CDATA[denali]]></dc:creator><pubDate>Wed, 17 Aug 2005 07:33:47 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Tue, 16 Aug 2005 13:54:50 GMT]]></title><description><![CDATA[<p>Von Eleganz kann nicht die Rede sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853438</guid><dc:creator><![CDATA[WTF??]]></dc:creator><pubDate>Tue, 16 Aug 2005 13:54:50 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Tue, 16 Aug 2005 14:00:16 GMT]]></title><description><![CDATA[<p>WTF?? schrieb:</p>
<blockquote>
<p>Von Eleganz kann nicht die Rede sein.</p>
</blockquote>
<p>Warum? Es ist kurz, übersichtlich und hat keine Laufzeiteinbußen.<br />
Ich muß doch nicht alles furchtbar kompliziert angehen, wenn es ein einfacher #define auch tut!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853449</guid><dc:creator><![CDATA[denali]]></dc:creator><pubDate>Tue, 16 Aug 2005 14:00:16 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Tue, 16 Aug 2005 21:37:51 GMT]]></title><description><![CDATA[<blockquote>
<p>übersichtlich</p>
</blockquote>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/853737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853737</guid><dc:creator><![CDATA[geschmackssache]]></dc:creator><pubDate>Tue, 16 Aug 2005 21:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Wed, 17 Aug 2005 04:55:46 GMT]]></title><description><![CDATA[<p>schreibs mir doch übersichtlicher, wenn du das Problem verstanden hast!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853801</guid><dc:creator><![CDATA[denali]]></dc:creator><pubDate>Wed, 17 Aug 2005 04:55:46 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Wed, 17 Aug 2005 07:43:09 GMT]]></title><description><![CDATA[<p>denali schrieb:</p>
<blockquote>
<p>schreibs mir doch übersichtlicher, wenn du das Problem verstanden hast!</p>
</blockquote>
<p>das fängt bei defines an, geht bei einrückung weiter, macht einen Umweg über sinnlose void zeiger obwohl ein template parameter zur verfügung steht, und hört bei fehlenden Kommentaren auf. Ohja, und ein paar Zeilenumbrüche mehr würden dem ganzen auch nicht schaden.</p>
<p>//edit hier mal so als Beispiel wie es aussehen könnte</p>
<pre><code class="language-cpp">//ich schätze mal, Par1 und Par2 sind void zeiger
template&lt;class T&gt;
void FP(T function,int bpp,void* dest,void* source,char* Pat,unsigned int size){
	if(bpp==24){
		function((CTriple*)dest,(CTriple*)source,Pat,size);
	}
	else if(bpp==32){
		function((CQuad*)dest,(CQuad*)source,Pat,size);
	}
	else if(bpp==8){
		function((char*)dest,(char*)source,Pat,size);
	}
	else{
		function((short*)dest,(short*)source,Pat,size);
	}
}
// in der .cpp-Datei

struct T_OrgImg{
	template&lt;class T&gt; 
	void operator() (T* Dst,T* Org,char* Pat,unsigned int size){
		for (unsigned int i=0;i&lt; size;i++){
			if (Pat[i]){
				Dst[i]=Org[i];
			}
		}
	}
}

LPIMG CImg::OrgImg (LPIMG Org)
{
  Dst= DstImg(0,Org-&gt;bpp); // Erstellt ein leeres Image wie Org
  FP(T_OrgImg(),Org-&gt;bpp,Dst-&gt;Data,Org-&gt;Data,Data,Area); //Template-Aufruf
  return Dst;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/853853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853853</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 17 Aug 2005 07:43:09 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Wed, 17 Aug 2005 14:39:49 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>das fängt bei defines an, geht bei einrückung weiter, macht einen Umweg über sinnlose void zeiger obwohl ein template parameter zur verfügung steht, und hört bei fehlenden Kommentaren auf. Ohja, und ein paar Zeilenumbrüche mehr würden dem ganzen auch nicht schaden.</p>
</blockquote>
<p>Hallo Otze,<br />
Also erst mal danke, daß du dir die Mühe gemacht hast, das Ganze umzugestalten! Ich muss jedoch leider noch ein paar Sachen dazu anmerken.<br />
Ich denke, wie jemand formattiert, ist Geschmackssache. Ich hasse halt<br />
nun mal ellenlange Listings mit tausenden von unnötigen Klammern, die es meiner Meinung nach auch nicht übersichtlicher machen. Wenn auf eine Bedingung nur eine Anweisung folgt, ist die Klammer halt in meinen Augen überflüssig. Außerdem verwende ich generell einen 2er-Tabulator.</p>
<p>Zugegeben, dein Funktionstemplate schaut etwas hübscher aus, als meine Defines. Und auch das mit dem operator() ist mir noch nicht ganz geläufig. (Ich beschäftige mich erst seit ein paar Tagen mit Templates und Operator-Überladungen)<br />
Aber leider hast du mein grundlegendes Problem scheinbar <strong>doch</strong> nicht ganz verstanden. Ich habe nicht nur eine Funktion mit dem Problem der unterschiedlichen Bitmaps, sondern derer zig. Nach deiner Methode, muß ich mir für jede davon zwei eigene Templates schreiben, wobei du sogar im Zuweisungs-Template (FP) castest.<br />
Was mach ich mit einer Funktion wie:</p>
<pre><code class="language-cpp">LPIMG::CopyRect (LPIMG Dst,CRect&amp; rc,int mode)
</code></pre>
<p>Die hat drei - und zwar völlig andere - Parameter (bei mir stimmt das mit dem 5. LPBYTE auch nicht!) Du müsstest also für jeden anderen Fall wieder ein neues Zuweisungs-Template schreiben.<br />
Meine Defines und void-Parameter sind also durchaus nicht sinnlos. Die gelten immer, und die Anpassung und das Casten für die jeweilige Routine ist ein Zweizeiler (nicht wie bei dir 10!). Daher finde ich meine Defines wie z.B FP3 (Funktion mit 3 Parametern) irgendwie halt doch eleganter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/854287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/854287</guid><dc:creator><![CDATA[denali]]></dc:creator><pubDate>Wed, 17 Aug 2005 14:39:49 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Wed, 17 Aug 2005 15:19:59 GMT]]></title><description><![CDATA[<blockquote>
<p>Hallo Otze,<br />
Also erst mal danke, daß du dir die Mühe gemacht hast, das Ganze umzugestalten! Ich muss jedoch leider noch ein paar Sachen dazu anmerken.<br />
Ich denke, wie jemand formattiert, ist Geschmackssache. Ich hasse halt<br />
nun mal ellenlange Listings mit tausenden von unnötigen Klammern, die es meiner Meinung nach auch nicht übersichtlicher machen. Wenn auf eine Bedingung nur eine Anweisung folgt, ist die Klammer halt in meinen Augen überflüssig. Außerdem verwende ich generell einen 2er-Tabulator.</p>
</blockquote>
<p>Hallo denali,<br />
Natürlich sind diese Klammern geschmackssache, und ich hab das ganze so formatiert, wie es für mich am sinnvollsten bzw hübschesten ist. Ich will dir ja nicht meinen Stil aufzwängen, aber du musst immer daran denken, dass hier im forum Leute deinen code lesen den du präsentierst. Und dein Stil mit dem operator ?: ist halt verdammt eng und unübersichtlich. Das problem ist, dass man nicht sofort sieht was wozu gehört, und-was auch sehr wichtig ist-man kann in deinem zweizeiler nicht einmal absetzen und in gedanken überlegen was du da machen willst.</p>
<blockquote>
<p>Zugegeben, dein Funktionstemplate schaut etwas hübscher aus, als meine Defines. Und auch das mit dem operator() ist mir noch nicht ganz geläufig. (Ich beschäftige mich erst seit ein paar Tagen mit Templates und Operator-Überladungen)</p>
</blockquote>
<p>die Klasse ist ein sogenannter Functor und der operator() hilft dabei das objekt so aussehen zu lassen, als wäre es eine Funktion, weil man direkt Objekt() schreiben kann. Generell sollte man funktoren funktionen vorziehen wenn man Funktionen herumreichen will.</p>
<blockquote>
<p>Aber leider hast du mein grundlegendes Problem scheinbar <strong>doch</strong> nicht ganz verstanden. Ich habe nicht nur eine Funktion mit dem Problem der unterschiedlichen Bitmaps, sondern derer zig. Nach deiner Methode, muß ich mir für jede davon zwei eigene Templates schreiben, wobei du sogar im Zuweisungs-Template (FP) castest.</p>
</blockquote>
<p>Es war anhand der spärlichen kommentare nicht erkennbar, was du da machen wolltest, da deine jetzigen anforderungen den vom thread anfang nicht mehr entsprechen.Daraus erschliesst sich auch, dass ich den cast als zusätzliches feature eingebaut habe, damit du nicht wieder son hack wie void zeiger casten machen musst.</p>
<p>Aber wo wir grad mal bei hacks sind: irgendwie kam mir das alles von anfang an wie ein großer hack vor. Imho steht dein ganzes Objekt zwischen den Stühlen, da es die arbeit von 4 verschiedenen Objekten machen muss.<br />
Dies ist sicher kein glückliches Objekt! Glückliche Objekte haben nur eine Aufgabe.<br />
Ich weis jetzt nicht, was du mit der Klasse alles machen willst, ich schätze aber mal bilder öffnen/bearbeiten/abspeichern.</p>
<p>Was du nun machen kannst, ist die datenverwaltung des Bildes an ein anderes Objekt abzutreten, welches die Bilder immer sofern möglich auf ein einheitliches Format bringt, damit du bei jedem Bild gleich verfahren kannst. Dadurch fällt dieser lästige Dispatch(FP) komplett weg, da dich das Bildformat nicht mehr zu interessieren braucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/854319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/854319</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 17 Aug 2005 15:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Wed, 17 Aug 2005 15:56:43 GMT]]></title><description><![CDATA[<blockquote>
<p>dein Stil mit dem operator ?: ist halt verdammt eng und unübersichtlich. Das problem ist, dass man nicht sofort sieht was wozu gehört, und-was auch sehr wichtig ist-man kann in deinem zweizeiler nicht einmal absetzen und in gedanken überlegen was du da machen willst.</p>
</blockquote>
<p>Ok, da muss ich dir wahrscheinlich Recht geben. (Ich wusste selber noch gar nicht, daß das so geht!)</p>
<blockquote>
<p>Es war anhand der spärlichen kommentare nicht erkennbar, was du da machen wolltest, da deine jetzigen anforderungen den vom thread anfang nicht mehr entsprechen.</p>
</blockquote>
<p>Ich dachte das wäre spätestens seit dem 4. Beitrag allen klar. Deswegen hab ich auch nicht allzuviele Kommentare verstreut. Ich dachte Namen wie Dst (Destination) und Src (Source) wären selbsterklärend.</p>
<p>Ja, es soll eine Bildverarbeitungs-Klasse werden, die sowohl Live-Grabbing über DirectShow, Live-Kantendetektion und Objekterkennung, sowie diverse Bildmanipulationen ermöglicht. Die einzige Unbekannte dabei ist halt die Ausgangsbitmap, die von S/W - 32Bit vorliegen kann.<br />
Ich werd mal über deinen Vorschlag der Delegation nachdenken. Vielleicht ist das ein ganz guter Tipp, obwohl ich damit das Problem ja nur auf eine andere Klasse verlagere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/854343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/854343</guid><dc:creator><![CDATA[denali]]></dc:creator><pubDate>Wed, 17 Aug 2005 15:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to Cast oder Templates on Wed, 17 Aug 2005 16:11:10 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich dachte Namen wie Dst (Destination) und Src (Source) wären selbsterklärend.</p>
</blockquote>
<p>das interessante ist ja, dass es sich nicht so auf Fp übertragen lässt <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="😉"
    /> also von wegen selbsterklärend^^</p>
<blockquote>
<p>Ich werd mal über deinen Vorschlag der Delegation nachdenken. Vielleicht ist das ein ganz guter Tipp, obwohl ich damit das Problem ja nur auf eine andere Klasse verlagere.</p>
</blockquote>
<p>das wichtige ist, dass du es aus der verarbeitenden Klasse verlagerst, die soll sich nicht damit rumschlagen müssen, welch ein Format hier vorliegt, sondern einfach damit arbeiten <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/854348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/854348</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 17 Aug 2005 16:11:10 GMT</pubDate></item></channel></rss>