<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>C++</title>
        <link>http://blogs.ugidotnet.org/rucka/category/303.aspx</link>
        <description>C++</description>
        <language>it-IT</language>
        <copyright>Gianluca Carucci</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <item>
            <title>Scrivere un render custom per il Video in WPF</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2008/01/25/90861.aspx</link>
            <description>&lt;p&gt;Partiamo dal problema. Il controllo MediaElement (così come il controllo MediaPlayer e DrawingVideo) ha il grosso limite di utilizzare come sorgente video solo una sorgente &lt;em&gt;conosciuta&lt;/em&gt; proveniente da un Uri. Per conosciuta si intende una sorgente, il cui protocol handler è registrato nel sistema (client).&lt;/p&gt;  &lt;p&gt;Come faccio a riprodurre un flusso video proveniente da una sorgente custom (scheda di acquisizione video, piuttosto che un protocollo di streaming custom) e/o codificato con un codec proprietario?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.aspitalia.com/autori/Cristian_Civera.aspx" target="_blank"&gt;Cristian&lt;/a&gt;, in &lt;a href="http://blogs.aspitalia.com/ricciolo/post2210/Sorgenti-Custom-MediaElement-WPF.aspx" target="_blank"&gt;questo&lt;/a&gt; articolo, spiega chiaramente il problema e propone un paio di soluzioni basate su l'interoperabilità tra Win32/WinForm e WPF la prima e la registrazione nel sistema di un custom protocol handler la seconda.&lt;/p&gt;  &lt;p&gt;La prima soluzione ha il vantaggio di non richiedere la registrazione di nulla sul sistema client; ha però il grosso svantaggio di non supportare trasformazioni sulla finestra video. I vantaggi e gli svantaggi si ribaltano nella seconda opzione.&lt;/p&gt;  &lt;p&gt;Questo &lt;a href="http://jmorrill.hjtcentral.com/Default.aspx?tabid=428&amp;amp;EntryID=16" target="_blank"&gt;post&lt;/a&gt; mostra una soluzione brillante che promette di sorpassare entrambi i vincoli.&lt;/p&gt;  &lt;p&gt;Per farla breve: questa soluzione utilizza le API &lt;a href="http://en.wikipedia.org/wiki/Windows_Imaging_Component" target="_blank"&gt;WIC&lt;/a&gt; per accedere direttamente al buffer unmanaged utilizzato dall'oggetto BitmapSource. Sarebbe già abbastanza per fare buone cose con un po' di Interop e la libreria &lt;a href="http://directshownet.sourceforge.net/" target="_blank"&gt;DirectShowLib&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Per gli intrepidi - coloro che non rabbrividiscono davanti alla necessità di scrivere codice C++ e usare COM - è possibile scrivere un filtro di render in DirectShow, che accetta un riferimento al buffer utilizzato dalla BitmapSource. E' quindi possibile costruire un grafo DirectShow la cui destinazione video è proprio il buffer della BitmapSource esposto a COM dal nostro render. Siamo riusciti a combinare la versatilità di DirectShow con la potenza di WPF. Ma tutto questo - forse - è un'altra storia.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d4746caf-15db-41ca-bfa9-79e74233ee9d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/DirectShow" rel="tag"&gt;DirectShow&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WPF" rel="tag"&gt;WPF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MediaPlayer" rel="tag"&gt;MediaPlayer&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/90861.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2008/01/25/90861.aspx</guid>
            <pubDate>Fri, 25 Jan 2008 09:52:27 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/90861.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2008/01/25/90861.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/90861.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/90861.aspx</trackback:ping>
        </item>
        <item>
            <title>Pensate come sarebbe brutto C# se...</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2007/10/30/89308.aspx</link>
            <description>&lt;p&gt;il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine dei namespace dichiarati a inizio file.&lt;/p&gt;  &lt;p&gt;Oppure se...&lt;/p&gt;  &lt;p&gt;il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine delle classi/delegati/enumerazioni all'interno di un file.&lt;/p&gt;  &lt;p&gt;O ancora peggio se...&lt;/p&gt;  &lt;p&gt;il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine dei file da compilare.&lt;/p&gt;  &lt;p&gt;Ma anche se...&lt;/p&gt;  &lt;p&gt;con tanta fatica (e fortuna) riusciamo a trovare la giusta combinazione, ma un piccolo flag - fondamentale per la buona riuscita della compilazione - all'interno della configurazione del nostro progetto, provoca un errore di linking.&lt;/p&gt;  &lt;p&gt;Per fortuna non sono problemi che si riscontrano in C#, ma aimè sono situazioni frequenti in progetti C++; ancor più frequenti quando si cerca di compilare un software Open Source. Ci fosse una volta che si scarica un progetto C++, si lancia la compilazione e questa funziona 'al primo colpo': certo, spesso il problema è dovuto ad una cattiva organizzazione del codice (e delle librerie), ma il linguaggio certo non aiuta. &lt;/p&gt;  &lt;p&gt;Sia chiaro, non odio C++, mi piace e per certi versi lo amo (diciamo che lo stimo moltissimo); come potrei odiare un linguaggio che procaccia il cibo al mio caro &lt;a href="http://blogs.ugidotnet.org/Franny/Default.aspx" target="_blank"&gt;fratellino&lt;/a&gt; ed evita che sia io a doverlo mantenere? &lt;/p&gt;  &lt;p&gt;Quello che però proprio non riesco a mandare giù è dover perdere del tempo (in alcuni casi ore o giorni), a risolvere dei problemi completamente estranei al reale scopo della soluzione che sto sviluppando. Se c'è un pregio di C# - e .NET in generale - è proprio questo: lo sviluppo è concentrato per lo più verso l'aspetto funzionale, invece di quello tecnologico e infrastrutturale.&lt;/p&gt;  &lt;p&gt;Se avete la necessità di dover compilare con MSVC++ 2005 l'ultima versione della libreria &lt;a href="http://www.xvid.org/Downloads.43.0.html" target="_blank"&gt;xvid&lt;/a&gt; è il vostro giorno fortunato: questa sera impiegherete 4 ore a decidere come vestirvi per andare sui navigli o al &lt;a href="http://www.karement.mc/" target="_blank"&gt;Karement&lt;/a&gt; piuttosto che perderle per capire come risolvere questo errore (ovviamente, lo stesso identico progetto compila correttamente usando MSVC++ 2003):&lt;/p&gt;  &lt;p&gt;&lt;i&gt;error C2632: 'int' followed by 'int' is illegal&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Il problema è causato dal punto del codice in cui è incluso windows.h nel file &lt;em&gt;portab.h&lt;/em&gt;. Spostando l'inclusione del file all'inizio del sorgente tutto funzionerà magicamente.&lt;/p&gt;  &lt;p&gt;Per essere un po' più puliti sostituiamo la dichiarazione di inclusione (nel punto originale) con il seguente codice:&lt;/p&gt; &lt;font color="#0000ff" size="2"&gt;   &lt;p&gt;#if &lt;font color="#0000ff" size="2"&gt;defined&lt;/font&gt;&lt;font size="2"&gt;(_MSC_VER) &amp;amp;&amp;amp; _MSC_VER &amp;lt; 1400&lt;/font&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;    &lt;p&gt;#include &lt;font color="#a31515" size="2"&gt;&amp;lt;windows.h&amp;gt;&lt;/font&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;    &lt;p&gt;#endif&lt;/p&gt; &lt;/font&gt;  &lt;p&gt;ed aggiungiamo all'inizio del file il codice: &lt;/p&gt; &lt;font color="#0000ff" size="2"&gt;   &lt;p&gt;#if &lt;font color="#0000ff" size="2"&gt;defined&lt;/font&gt;&lt;font size="2"&gt;(_MSC_VER) &amp;amp;&amp;amp; _MSC_VER == 1400&lt;/font&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;    &lt;p&gt;#include &lt;font color="#a31515" size="2"&gt;&amp;lt;windows.h&amp;gt;&lt;/font&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;    &lt;p&gt;#endif&lt;/p&gt; &lt;/font&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;In questo modo se il compilatore Visual C++ 2005, l'inclusione del file sarà spostata all'inizio del sorgente, altrimenti sarà lasciata dov'è.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:13ed7a3f-7f8c-43b1-ad34-8cb21c9ac2d7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/C++/" rel="tag"&gt;C++&lt;/a&gt; , &lt;a href="http://technorati.com/tags/C#/" rel="tag"&gt;C#&lt;/a&gt; , &lt;a href="http://technorati.com/tags/include/" rel="tag"&gt;include&lt;/a&gt; , &lt;a href="http://technorati.com/tags/compilazione/" rel="tag"&gt;compilazione&lt;/a&gt; , &lt;a href="http://technorati.com/tags/xvid/" rel="tag"&gt;xvid&lt;/a&gt; , &lt;a href="http://technorati.com/tags/vs2005/" rel="tag"&gt;vs2005&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/89308.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2007/10/30/89308.aspx</guid>
            <pubDate>Tue, 30 Oct 2007 14:11:39 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/89308.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2007/10/30/89308.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/89308.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/89308.aspx</trackback:ping>
        </item>
        <item>
            <title>Nuovo ma già obsoleto?!?!?</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2006/08/31/47019.aspx</link>
            <description>&lt;div class="majorTitle"&gt;Ogni tanto, leggendo l'msdn, escono cose simpatiche:)&lt;/div&gt;
&lt;div class="majorTitle"&gt;Tratto dalla documentazione del metodo &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.visualc.cppcodeprovider.createcompiler.aspx"&gt;CppCodeProvider.CreateCompiler&lt;/a&gt; su MSDN Library:&lt;/div&gt;
&lt;div class="majorTitle"&gt; &lt;/div&gt;
&lt;div class="majorTitle"&gt;"&lt;/div&gt;
&lt;div class="majorTitle"&gt;.&lt;em&gt;NET Framework Class Library  &lt;/em&gt;&lt;/div&gt;
&lt;div class="title"&gt;&lt;em&gt;CppCodeProvider.CreateCompiler Method  &lt;/em&gt;&lt;/div&gt;&lt;!--Content type: DocStudio. Transform: devdiv2mtps.xslt.--&gt;
&lt;div id="mainSection"&gt;
&lt;div id="mainBody"&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="COLOR: red"&gt;Note: This method is new in the .NET Framework version 2.0.&lt;/span&gt; &lt;/em&gt;
&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;
&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style="COLOR: red"&gt;&lt;b&gt;NOTE: This method is now obsolete.&lt;/b&gt;&lt;/span&gt; &lt;/em&gt;&lt;/p&gt;&lt;em&gt;Creates an instance of the C++ code compiler. &lt;/em&gt;
&lt;p&gt;&lt;em&gt;&lt;b&gt;Namespace:&lt;/b&gt; Microsoft.VisualC&lt;br /&gt;&lt;b&gt;Assembly:&lt;/b&gt; CppCodeProvider (in cppcodeprovider.dll)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;"&lt;/p&gt;
&lt;p&gt;Non bastasse, l'implementazione del metodo restituisce un NotImplementedException....&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin: 0px; padding: 0px; display: inline;" contenteditable="false" class="wlWriterSmartContent"&gt;Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/Msdn"&gt;Msdn&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Codedom"&gt;Codedom&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/47019.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2006/08/31/47019.aspx</guid>
            <pubDate>Thu, 31 Aug 2006 08:07:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/47019.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2006/08/31/47019.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/47019.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/47019.aspx</trackback:ping>
        </item>
        <item>
            <title>Media Foundation: DirectShow avrà un successore?</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2006/08/09/46014.aspx</link>
            <description>&lt;p&gt;Finalmente oltre a un nuovo motore grafico (WPF), un nuovo motore di Workflow (WWF) e un nuovo layer di comunicazione (WCF), Vista ha anche un nuovo motore per applicazioni multimediali chiamato Media Foundation (che fantasia). &lt;/p&gt;
&lt;p&gt;L'obbiettivo è quello di offrire una piattaforma capace di supportare pienamente l'alta definizione e di permettere una adeguata protezione dei contenuti multimediali manipolati. &lt;/p&gt;
&lt;p&gt;Nonostante DirectShow sia una piattaforma molto versatile, comincia a risentire della sua decennale età. Media Foundation promette di introdurre una architettura più accessibile e soprattutto più in linea con i progressi fatti negli ultimi anni nel campo del multimedia.&lt;/p&gt;
&lt;p&gt;Se vi aspettate che Media Foundation si basi su tecnologia managed rimarrete delusi (e non sarete gli unici:P). Direttamente dall'SDK:&lt;/p&gt;
&lt;p&gt;"&lt;em&gt;Media Foundation requires Windows Vista. Media Foundation uses the component object model (COM) and requires C/C++. There is no managed layer for Media Foundation at this time.&lt;/em&gt;" &lt;/p&gt;
&lt;p&gt;Technorati Tags: &lt;a rel="tag" href="http://www.technorati.com/tag/MediaFoundation+"&gt;MediaFoundation&lt;/a&gt;, &lt;a rel="tag" href="http://www.technorati.com/tag/DirectShow+"&gt;DirectShow&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/46014.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2006/08/09/46014.aspx</guid>
            <pubDate>Wed, 09 Aug 2006 10:31:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/46014.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2006/08/09/46014.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/46014.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/46014.aspx</trackback:ping>
        </item>
        <item>
            <title>Region in C++/CLI</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2006/01/29/33858.aspx</link>
            <description>&lt;P&gt;Tutti ormai sanno che la direttiva #region&amp;nbsp;di C#&amp;nbsp;aiuta ad aumentare&amp;nbsp;la leggibilit&amp;#224; del codice e che la&amp;nbsp;direttiva stessa non esiste direttamente in c++. Quello che forse non si sa &amp;#232; che le region sono utilizzabili con il C++ dal VS2005, attraverso la direttiva pragma. Ecco un piccolo snippet:&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#pragma&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;region&lt;/FONT&gt; Main&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;int&lt;/FONT&gt; main(&lt;FONT color=#0000ff&gt;array&lt;/FONT&gt;&lt;?XML:NAMESPACE PREFIX = System /&gt;&lt;System::String ^&gt; ^args)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;Console::WriteLine(L&lt;FONT color=#800000&gt;"Hello World"&lt;/FONT&gt;);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; 0;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#pragma&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;endregion&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;Adesso&amp;nbsp;non si hanno pi&amp;#249; scuse per non usare il c++/cli :)&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/System::String&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/33858.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2006/01/29/33858.aspx</guid>
            <pubDate>Sun, 29 Jan 2006 08:52:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/33858.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2006/01/29/33858.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/33858.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/33858.aspx</trackback:ping>
        </item>
        <item>
            <title>Generics e alias</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2005/12/23/31931.aspx</link>
            <description>&lt;p&gt;In c++, quando utilizziamo un template (prendiamo ad esempio il tipo std::vector), è pratica abbastanza diffusa definire un nuovo tipo del template specializzato. &lt;/p&gt;
&lt;p&gt;Qualcosa di questo tipo per intenderci:&lt;/p&gt;
&lt;p&gt;&lt;font color="#000080"&gt;typedef std::vector&lt;int&gt;  IntVector;&lt;/int&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Come sappiamo  usare un template (o un tipo generico del framework) allunga incredibilmente il nome del tipo e risulta molto scomodo dover ripetere lo stesso nome per intero ad ogni cast, istanziazione etc etc. Esiste qualcosa di simile al tipedef anche in C#? La risposta è si, ma tenendo ben presente l'aggettivo SIMILE. In C# possiamo definire un alias utilizzando la key &lt;em&gt;using&lt;/em&gt;. La "dichiarazione duale del tipo IntVector di c++, in c# sarebbe:&lt;/p&gt;
&lt;p&gt;&lt;font color="#000080"&gt;using IntList = System.Collection.Generic.List&lt;int&gt;;&lt;/int&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Leggere attentamente le avvertenze: lo statement &lt;em&gt;using&lt;/em&gt;, come avviene con i namespace, definisce solo un alias, non esiste un vero e proprio equivalente del typedef del c++. Questo è supportato dal fatto che, una volta compilato il codice, nel nostro assembly non esisterà nessun metadata che fa riferimento al tipo IntList. Se proprio vogliamo definire un tipo specializzato del generic dobbiamo creare una classe che eredita dalla versione specializzata del tipo generico(magari può essere utile un codesnippet per questo).&lt;/p&gt;&lt;div style="margin: 0px; padding: 0px; display: inline;" contenteditable="false" class="wlWriterSmartContent"&gt;Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/C++"&gt;C++&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/using"&gt;using&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/template"&gt;template&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/generics"&gt;generics&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/31931.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2005/12/23/31931.aspx</guid>
            <pubDate>Fri, 23 Dec 2005 10:41:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/31931.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2005/12/23/31931.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/31931.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/31931.aspx</trackback:ping>
        </item>
        <item>
            <title>Per chi pensa che C# sia un mostro cattivo...</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2004/10/25/4633.aspx</link>
            <description>&lt;p&gt;... e voglia portarsi via tutte le nostre vecchie e robuste applicazioni unmanaged, una frase (e un articolo) che chiarifica alcuni preconcetti: &lt;/p&gt;
&lt;p&gt;"Some have speculated that C# is a replacement for C++, but it most certainly is not. C# is a language that is easier to learn than C++, and provides access to the functionality of the CLR. For those who already know C++, there's no need to learn anything to gain access to the functionality of the CLR, and C++ has features that are not in C#, so moving would actually involve giving up some power."&lt;/p&gt;
&lt;p&gt;La frase è presa dall'&lt;a href="http://msdn.microsoft.com/longhorn/?pull=/library/en-us/dnvs05/html/movNETWFX.asp"&gt;articolo&lt;/a&gt; su MSDN "Moving to .NET and WinFX: a Roadmap for C/C++ Applications".&lt;/p&gt;
&lt;p&gt;Buona lettura&lt;/p&gt;&lt;div style="margin: 0px; padding: 0px; display: inline;" contenteditable="false" class="wlWriterSmartContent"&gt;Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/C++"&gt;C++&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/C#"&gt;C#&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/4633.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2004/10/25/4633.aspx</guid>
            <pubDate>Mon, 25 Oct 2004 08:49:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/4633.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2004/10/25/4633.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/4633.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/4633.aspx</trackback:ping>
        </item>
        <item>
            <title>I Tempi che furono....</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2004/10/20/4477.aspx</link>
            <description>&lt;P&gt;Ancora per poco, sfogliando l'msdn alla voce "Visual c++ Compiler Options: /Z7, /Zd, /Zi, /ZI (Debug Information Format)" possiamo trovare:&lt;/P&gt;
&lt;P&gt;/ZI:  "Produces a program database, as described above, in a format that supports the &lt;STRONG&gt;Edit and Continue feature&lt;/STRONG&gt;. If you want to use Edit and Continue debugging, you must use this option. Because most optimizations are incompatible with Edit and Continue, using /ZI disables any &lt;CODE class=ce&gt;#pragma optimize&lt;/CODE&gt; statements in your code. &lt;/P&gt;
&lt;P&gt;/ZI causes /Gy to be used in your compilation.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;/ZI is not compatible with &lt;/STRONG&gt;&lt;STRONG&gt;/clr&lt;/STRONG&gt;."&lt;/P&gt;
&lt;P&gt;Sar&amp;#224; ancora cos&amp;#236; anche x il CLR 2.0? C# 2.0 ha ceduto, non ci resta che sperare ancora nel nuovo c++ managed:D&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/4477.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2004/10/20/4477.aspx</guid>
            <pubDate>Wed, 20 Oct 2004 10:51:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/4477.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2004/10/20/4477.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/4477.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/4477.aspx</trackback:ping>
        </item>
        <item>
            <title>Initializer nei costruttori: C++ Vs C#</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2004/09/03/2016.aspx</link>
            <description>&lt;P&gt;Spesso, programmando in c++, mi scontro con diversit&amp;#224; nell'interpretazione (ed effettiva implementazione) della programmazione a oggetti rispetto al c#. Quando mi trovo in queste situazioni mi viene da pensare il motivo di questa differenza&amp;nbsp;e perch&amp;#232; in fase di&amp;nbsp;progettazione dei due&amp;nbsp;linguaggi Straustrup e Hejlsberg sono arrivati a due conclusioni differenti. L'esempio pi&amp;#249; eclatante riguarda sicuramente la diatriba sull'ereditariet&amp;#224; multipla. In questo post invece mi volevo soffermare su un problema molto meno rilevante dell'esempio appena citato: l'initializer nei costruttori e in particolare richiamare nell'initializer un'altra versione del&amp;nbsp;costruttore della classe. &lt;/P&gt;
&lt;P&gt;In entrambi i linguaggi l'initializer &amp;#232; opzionale e in c# accetta solo costruttori, tramite la parola chiave this (che invoca un&amp;nbsp;costruttore della stessa classe)&amp;nbsp;o base (che invoca il costruttore della classe base). In c++ l'inizializer accetta solo o membri della classe oppure un costruttore della classe base, senza dare la possibilit&amp;#224; di richiamare un altro costruttore della stessa classe. Vediamo un esempio:&lt;/P&gt;
&lt;P&gt;Abbiamo&amp;nbsp;una classe A e una classe B che eredita da A. Le dichiarazione delle classi &amp;#232; sostanzialmente analoga:&lt;/P&gt;
&lt;P&gt;[C#] &lt;BR&gt;public class A &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp; int _a; &lt;BR&gt;&amp;nbsp;&amp;nbsp; //Constructor.... &lt;BR&gt;} &lt;BR&gt;public class B: A &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; private int _b; &lt;BR&gt;&amp;nbsp; //Constructor... &lt;BR&gt;} &lt;BR&gt;[C++] &lt;BR&gt;public class A &lt;BR&gt;{ &lt;BR&gt;private: &lt;BR&gt;&amp;nbsp; int _a; &lt;BR&gt;&amp;nbsp; //Constructor.... &lt;BR&gt;}; &lt;BR&gt;public class B: public A &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; private: &lt;BR&gt;&amp;nbsp; int _b; &lt;BR&gt;&amp;nbsp; //Constructors.... &lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;La parte interessate riguarda l'implementazione dei costruttori. Vediamo i costruttori della classe A:&lt;BR&gt;[C#] &lt;BR&gt;public A() : this(0) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;public A(int a) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; _a = a; &lt;BR&gt;} &lt;BR&gt;.... &lt;BR&gt;[C++] &lt;BR&gt;public: &lt;BR&gt;A(void) : _a(0) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;A(int a): _a(a) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;Le differenze tra i due linguaggi balzano subito agli occhi: In C# non possono essere inizializzati i membri nell'initializer (anche perch&amp;#232; in realt&amp;#224; non ci sarebbe differenza, se non sintattica,&amp;nbsp;rispetto ad inizializzarli nel corpo del costruttore) mentre in c++ non pu&amp;#242; essere richiamata dal costruttore A(void) la versione del costruttore A(int a). &lt;BR&gt;Vediamo ora i costruttori della classe B: &lt;BR&gt;[C#] &lt;BR&gt;public B() : this(0) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;public B(int b): this(0, b) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;public B(int a, int b): base(a) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; _b = b; &lt;BR&gt;} &lt;BR&gt;.... &lt;BR&gt;[C++] &lt;BR&gt;public: &lt;BR&gt;B(void) : A(0), _b(0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Richiamo del costruttore con un parametro della classe base&amp;nbsp;e inizializzazione del membro _b&lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;B(int b): A(0), _b(b) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;B(int a, int b): A(a), _b(b) &lt;BR&gt;{} &lt;BR&gt;&lt;BR&gt;Dalla classe figlia B balza all'occhio ancora la comodit&amp;#224; (e spesso necessit&amp;#224;) del c++ di inizializzare i membri nell'initializer e&amp;nbsp;l'impossibilit&amp;#224; di richiamare una versione diversa del costruttore della classe. E' possibile invece richiamare un costruttore della classe figlia. &lt;BR&gt;Come si dice in questi casi la domanda nasce spontanea: perch&amp;#232; inell'initializer, n c++, si pu&amp;#242; richiamare un costruttore della classe base e non un costruttore diverso della classe figlia? E' una scelta progettuale ed &amp;#232; dettata da una ragione ben precisa o pi&amp;#249; semplicemente in fase di progettazione del linguaggio non &amp;#232; stata proprio pensata una situazione di questo genere? Visto e considerato che C# &amp;#232; un linguaggio pi&amp;#249; nuovo, e permette questa situazione,&amp;nbsp; mi viene da pensare che sia stata una "dimenticanza" del c++.&amp;nbsp; La sensazione &amp;#232; che a questa domanda pu&amp;#242; rispondere solo Mr. Straustrup:)&lt;/P&gt;Ai POSTeri l'ardua sentenza....&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/2016.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2004/09/03/2016.aspx</guid>
            <pubDate>Fri, 03 Sep 2004 14:51:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/2016.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2004/09/03/2016.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/2016.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/2016.aspx</trackback:ping>
        </item>
        <item>
            <title>Non è Eric Gunnerson ma...</title>
            <link>http://blogs.ugidotnet.org/rucka/archive/2003/11/19/387.aspx</link>
            <description>&lt;P&gt;pu&amp;#242; essere interessante lo stesso:)&lt;/P&gt;
&lt;P&gt;Per chi &amp;#232; appassionato del mondo dei videogiochi propongo un'interessante intervista fatta da Multiplayer.it... Bh&amp;#232; non vi svelo nulla:)&lt;/P&gt;
&lt;P&gt;Il link &amp;#232; &lt;A href="http://pc.multiplayer.it/articoli.php3?id=9484"&gt;http://pc.multiplayer.it/articoli.php3?id=9484&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/rucka/aggbug/387.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gianluca Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rucka/archive/2003/11/19/387.aspx</guid>
            <pubDate>Wed, 19 Nov 2003 10:48:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rucka/comments/387.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rucka/archive/2003/11/19/387.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rucka/comments/commentRss/387.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rucka/services/trackbacks/387.aspx</trackback:ping>
        </item>
    </channel>
</rss>