Recentemente ho avuto bloccato in una situazione come questa:dichiarazione anticipata di tipi nidificati/classi in C++
class A
{
public:
typedef struct/class {...} B;
...
C::D *someField;
}
class C
{
public:
typedef struct/class {...} D;
...
A::B *someField;
}
Di solito è possibile dichiarare un nome di classe:
class A;
ma non è possibile in avanti dichiarare un tipo annidato, il seguente causa errore di compilazione.
class C::D;
Qualche idea?
Perché ne hai bisogno? Si noti che è possibile inoltrare la dichiarazione se si tratta di un membro della stessa classe da definire: classe X {classe Y; Y * a; }; classe X: Y {}; –
Errore affascinante. –
Questa soluzione ha funzionato per me (spazio dei nomi C {class D;};): http://stackoverflow.com/questions/22389784/c-code-fails-to-compile-after-upgrading-xcode-5-0-5 -1-forward-declaration –