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++ - Identificatore non dichiarato (secondo il compilatore)
Forum - C/C++ - Identificatore non dichiarato (secondo il compilatore)

Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 11:13
Sabato, 03/01/2015
Salve, sto riscontrando problemi nella compilazione di una libreria con visual studio 2013 ultimate.
In sintesi ho un header dove definisco una classe, quell'header è stato incluso in un altro header perchè un membro di un'altra classe deve ritornare un puntatore a un oggetto derivato dalla prima classe.

Il punto è che nella dichiarazione della seconda classe se scrivo FileInterface, FileInterface* o shared_ptr<FileInterface> come tipo di ritorno della funzione di classe il compilatore ritorna un errore che è FileInterface identificatore non dichiarato oppure aspettato ; prima di * nel caso di FileInterface*. Nel sorgente dove ci sono i metodi membri della seconda classe posso invece usare FileInterface perchè lì l'identificatore è dichiarato infatti posso ritornare (void*)(new FileInterface(....));

Io non riesco proprio a capire per quale assurdo motivo il compilatore mi dica identificatore non dichiarato se l'header è incluso. L'intellisense infatti prontamente mi dice che FileInterface è dichiarato come classe questo a conferma del fatto che non ho sbagliato a scrivere il nome della classe.

PM Quote
Avatar
SamIAm (Normal User)
Newbie


Messaggi: 16
Iscritto: 09/09/2012

Segnala al moderatore
Postato alle 12:06
Sabato, 03/01/2015
hai provato con la forward declaration della classe ?

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 12:15
Sabato, 03/01/2015
Ti ringrazio ma ho risolto pochissimi secondi fa, è solo visual studio che è stupido e quindi fa doppie inclusioni anche con
#ifndef __HEADER__
#define __HEADER__

#endif

mi è toccato usare

#pragma once

così avrò da divertirmi quando compilerò con g++

PM Quote