Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema inclusione header
Forum - C/C++ - Problema inclusione header

Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Segnala al moderatore
Postato alle 1:26
Martedì, 23/04/2013
Ciao a tutti,
per ammazzare il tempo durante le lezioni in università mi son messo a scrivere un surrogato di paint anche per testare/debuggare del codice scritto in precedenza su cui questo programma si basa. Ho iniziato a scrivere tutto in main.cc. Nel giro di due giorni quel file è diventato lungo più di 2000 righe di codice ed era praticamente ingestibile anche perché essendo iniziata come una cosa non seria scrivevo nella prospettiva di abbandonare il progetto nel giro di poco. Così non è stato e vorrei ultimarlo. Quindi sta sera mi sono armato di pazienza e ho iniziato a distribuire tutte le definizioni delle classi in headers e tutte le implementazioni nei sorgenti facendo anche del cleaning del codice. Finito il lavoro ho provato a compilare (uso eclipse 3.7.2 come ide) e ho ricevuto dei strani
Codice sorgente - presumibilmente C/C++

  1. Field '...' could not be resolved


Ho provato un po' a smanettare, ma nulla. Non ne vuol sapere. Posto un esempio di come ho strutturato il codice e vi chiedo se secondo voi è un errore mio oppure è eclipse che fa schifo.

Classe Canvas definita in "canvas.hh"
Codice sorgente - presumibilmente C++

  1. #ifndef CANVAS_HH_
  2. #define CANVAS_HH_
  3. #include <HELIUM.hh>
  4.  
  5. class Canvas
  6. {
  7. public:
  8.         HE::Video::Surface canvas;
  9.         string canvasPath;
  10.         short signed x,y;
  11. };
  12.  
  13.  
  14. #endif /* CANVAS_HH_ */



Nell'header "paint.hh":
Codice sorgente - presumibilmente C++

  1. #ifndef _PAINT_
  2. #define _PAINT_
  3. #include "NEON.hh"
  4. #include "include/Common/OAPPLICATION.hh"
  5. #include "canvas.hh"
  6. ...
  7. #endif



Nel sorgente "paint.cc" includo con:
Codice sorgente - presumibilmente C/C++

  1. #include "paint.hh"



E gli errori riscontrati sono:
Codice sorgente - presumibilmente Delphi

  1. Multiple markers at this line
  2.         - Method 'getWidth' could not be
  3.          resolved
  4.         - Method 'getHeight' could not be
  5.          resolved
  6.         - Field 'canvas' could not be resolved
  7.         - Field 'canvas' could not be resolved



getWidth e getHeight sono metodi della classe HE::Video::Surface, quindi penso l'errore sia derivante solo dall'ultimo punto dato che in altre zone del codice lo capisce benissimo a che mi riferisco. Lo stesso errore mi si presenta con altre due classi.

PM Quote
Avatar
Saik (Normal User)
Pro


Messaggi: 117
Iscritto: 07/08/2011

Segnala al moderatore
Postato alle 15:17
Martedì, 23/04/2013
L'errore dovrebbe essere alla riga 14 del file canvas. Prova a sostituirla con:
Codice sorgente - presumibilmente C/C++

  1. #endif  CANVAS_HH_


PM Quote
Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Segnala al moderatore
Postato alle 19:36
Domenica, 28/04/2013
No, il problema non era quello. Dopo aver sistemato un casino combinato con la scheda video ho scaricato l'ultima versione di Eclipse CDT (Juno). Il problema è scomparso, quindi suppongo fosse un bug del parser di Eclipse CDT (Helios).
Grazie comunque.

PM Quote