Sto cercando la migliore soluzione per scrivere software multipiattaforma, ovvero il codice che scrivo e che devo interfacciare ogni volta con diverse librerie e piattaforme.
Quello che considero la parte più semplice, correggermi se ho torto, è la definizione di nuovi tipi, tutto quello che devo fare è scrivere un file hpp con un elenco di typedefs
, posso mantenere gli stessi nomi per ogni nuovo tipo attraverso le diverse piattaforme in modo che il mio codebase possa essere condiviso senza problemi. typedefs
mi aiuta anche a ridefinire un ambito migliore per i miei tipi nel mio codice.
Probabilmente finirò per avere qualcosa di simile a questo:
include
|-windows
| |-types.hpp
|-linux
| |-types.hpp
|-mac
|-types.hpp
Per le interfacce penso alla stessa soluzione utilizzata per i tipi, una serie di file hpp, probabilmente scriverò tutte le interfacce solo una volta poiché si basano sui tipi e tutta la "portabilità cross-platform" è garantita dal lavoro svolto sui tipi.
include
|
|-interfaces.hpp
|
|-windows
| |-types.hpp
|-linux
| |-types.hpp
|-mac
| |-types.hpp
Per classi e metodi non ho una risposta reale, vorrei evitare 2 cose:
- l'uso esplicito di puntatori
- l'uso dei modelli
Voglio evitare l'uso dei puntatori perché possono rendere il codice meno leggibile per qualcuno e voglio evitare i template solo perché se li scrivo, non riesco a separare l'interfaccia dalla definizione.
Qual è l'opzione migliore per nascondere l'uso dei puntatori?
Vorrei anche qualche parola sulle macro e su come implementare alcune chiamate e definizioni specifiche del sistema operativo.