• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Errore con le classi

gedamial

Utente Senior
Autore del topic
9 Giugno 2010
1.937
69
Miglior risposta
0
Salve.

Oggi volevo esercitarmi un po' con la OOP e ho realizzato quanto segue:

MAIN.CPP
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

PLAYER.H

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

PLAYER.CPP
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

ENEMY.H
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

ENEMY.CPP
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Gli errori che il compilatore mi da sono i seguenti:
Perfavore, Entra oppure Registrati per vedere i Link!


Vi ringrazio in anticipo!
 
Hai delle dipendenze circolari nei file di header; il Player includi Enemy e in Enemy includi Player... dovresti fare una "forward declaration" -> se leggi la prima risposta a questo post è spiagato bene quando usarla
Perfavore, Entra oppure Registrati per vedere i Link!
 
  • Like
Reactions: 1 person
Hai delle dipendenze circolari nei file di header; il Player includi Enemy e in Enemy includi Player... dovresti fare una "forward declaration" -> se leggi la prima risposta a questo post è spiagato bene quando usarla
Perfavore, Entra oppure Registrati per vedere i Link!
@ptm ti ringrazio per la risposta, ma visto che non ho ricevuto risposta da ieri... mi son lasciato prendere dalla pazienza e ho scritto un post sullo stesso sito.

Ecco il mio post lì:
Perfavore, Entra oppure Registrati per vedere i Link!


Ho ricevuto la stessa tua risposta e ho risolto il problema.

La cosa che non capisco è: in quali casi bisogna usare il Forward Declaration? Quand'è che mi accorgo che DEVO usarlo?

E poi, perché i compilatori non ti aiutano, magari dicendo "Forward Declaration needed..."?

Grazie =)
 
L'ho visto solo oggi XD stackOverflow comunque è eccezionale ;) la maggior parte dei problemi che si hanno facilmente li ha avuti qualcun altro e li ha risolti lì...
La forward declaration è opportuno utilizzarla appunto quando hai problemi di dipendenze cicliche; per esempio nel tuo caso in Enemy.h includevi Player.h che a sua volta includeva Enemy.h; questo non è ammesso.
Il compilatore ha protestato dicendo l'errore (a volte basta fare una ricerca solo con il codice dell'errore per capire quale potrebbe essere la causa); forse alcune IDE potrebbero suggerirtelo...
 
L'ho visto solo oggi XD stackOverflow comunque è eccezionale ;) la maggior parte dei problemi che si hanno facilmente li ha avuti qualcun altro e li ha risolti lì...
La forward declaration è opportuno utilizzarla appunto quando hai problemi di dipendenze cicliche; per esempio nel tuo caso in Enemy.h includevi Player.h che a sua volta includeva Enemy.h; questo non è ammesso.
Il compilatore ha protestato dicendo l'errore (a volte basta fare una ricerca solo con il codice dell'errore per capire quale potrebbe essere la causa); forse alcune IDE potrebbero suggerirtelo...

E' un sito eccezionale, son d'accordo. Trovi tutto. Basta una ricerca su google e ti trovi sempre qualcuno che ha avuto lo stesso problema.
La cosa che mi fa incazzare di quel sito è la rigidità che ha nei confronti di chi deve chiedere aiuto... tipo su 4 domande, 3 me ne segnalano per chissà quale stupido motivo.

Anyway, grazie mille! Risolto!

p.s: sei un programmatore?
 
ok, lo segno risolto ;)
Non di professione... per ora sto ancora studiando...