Oppure

Loading
03/01/15 10:13
TheDarkJuster
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.
aaa
03/01/15 11:06
SamIAm
hai provato con la forward declaration della classe ?
aaa
03/01/15 11:15
TheDarkJuster
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++
aaa