Alcuni avvisi per evitare alcune "deviazioni" comuni:
1) C ++ e C # sembrano molto simili, ma la loro similitudine termina proprio lì (nell'aspetto).
2) "L'applicazione nativa", sia su Windows che su Linux, non è C ++, ma C poiché C è la lingua nativa per entrambe le API del kernel del sistema operativo. In questo senso, tutte le librerie C ++ che interfacciano il sistema operativo sono solo un livello di astrazione lontano
3) Le librerie C # (in particolare .Net) sono strongmente basate su una gerarchia OOP. In C ++, OOP è solo uno dei possibili paradigmi di programmazione, e non sempre il più efficiente, ma ...
4) C ++ ha avuto un lungo processo di standardizzazione durato decenni. Durante questo processo è cambiato molto sia come lingua che come libreria standard. Sfortunatamente molti framework e librerie sviluppati per supportare l'interfaccia nativa del sistema operativo in cui sono scritti decenni fa, e hanno ancora un lungo backlog non più standard. Ad oggi non esiste una libreria GUI C ++ 11 che sia realmente ispirata dallo stesso C ++ 11, piuttosto che rendere il codice pre-C ++ 11 compilabile in C ++ 11.
5) Di conseguenza, imparando lo "stato dell'arte" C ++ ti renderà efficiente ed efficiente nell'implementare i tuoi algoritmi e le tue classi, ma ti riconduce a C ovunque tu abbia bisogno di interagire con l'API nativa o ...
6) Imparare uno dei framework C ++ esistenti che astraggono il concetto GUI (Like MFC) a volte anche su piattaforme multiple (come GTK, WxWidget ecc.), non ti renderà un "buon programmatore C ++" dato che ti porterà torna a C ++ 03 o anche C ++ 98.
Tutto ciò detto, hai due percorsi:
a) Impara un framework e attraverso questo impara il C ++ (o ... quella parte di C ++ usata per sostenere il framework stesso). Ciò ti renderà produttivamente veloce, ma meno efficiente nella strutturazione del codice e nel corretto riutilizzo. (usi "tecniche passate" e "trucchi e suggerimenti specifici per la struttura")
b) Impara C ++ per quello che è (inizia con il libro che insegna C ++ insieme alla sua libreria: evita tutti i libri che parlano di puntatori e array prima di vettori e contenitori), e una volta che hai compreso la pratica corretta, sviluppa te stesso l'API wrapper (non è così difficile) per sostenere le tue app, ma sii pronto a sostituirle non appena arriverà un nuovo framework per il sistema C ++ 11.