24/06/2024 - giorgik63 ha scritto:
quello che vorrei sapere è come ottenere una cosa del genere.
- In pratica ho un vettore di puntatori alla classe Entity (da cui derivano altre classi) che costituiscono un insieme di oggetti presenti in una
- mappa di un video gioco 2D, che ho scritto in C++17. Ora devo creare diverse mappe di gioco aventi ogniuna un isieme di oggetti (la gran parte di questi sono sempre gli stessi della prima mappa).
- In Java si è fatta una cosa simile, usando la riga di codice che ho riportato all'inizio.
La mia domanda dunque, come posso fare in C++17 una cosa simile.
@giorgik63, QUALE cosa del genere?
- La gestione dei puntatori?
- la gestione della memoria?
- il fatto che in Java quando dichiari un oggetto stai implicitamente usando un puntatore mentre in C++ devi usare DIRETTAMENTE i puntarori?
- la gestione di un vettore di vettori dove ogni elemento di questo ultimo puo' essere una classe o una classe derivata?
.
Se e' il punto 4, caro mio, la tua comprensione del C++ e' a MENO INFINITO, nemmeno a zero.
Java e C++ si assomigliano come sintassi, MA conoscere la sintassi di un linguaggio di programmazione NON VUOL DIRE saper programmare in quel linguaggio.
Per rispondere alla tua domanda serve un capitolo, o anche piu' di un capitolo, di un libro sul C++
Comunque, potrebbe essere una cosa del genere:
std::vector<
std::vector<
std::smart_ptr<Entity>
>
> obj;
o peggio
std::smart_ptr<
std::vector<
std::smart_ptr<
std::vector<
std::smart_ptr<Entity>
>
>
>
> obj;
e questo semplice esempio si porta dietro i capitoli su
- puntatori
- standard template library
- template programming
- container stl
- smart pointers
- ereditarieta'
.
E non ultimo: come implementare il Garbage Collector in C++, dove ci sono almeno 2 libri di testo TOSTI sull'argomento.
Buona fortuna