Le dichiarazione forward mi mandano un po fuori strada.
Partendo da questo esercizio ho cercato di ricreare le dichiarazioni anticipate ma con scarso successo.

Grazie
Lele

Perché Egg* layEgg(); è dichiarata in chicken.h
codice:
// chicken.h

#ifndef CHICKEN_H
#define CHICKEN_H

//class Egg;
//start
#include "egg.h"

class Chicken {
 public:
    Egg* layEgg();
};
//end

#endif        //  #ifndef CHICKEN_H
Perché Chicken* getParent(); è dichiatata in egg.h
codice:
// egg.h
#ifndef EGG_H
#define EGG_H
//start
class Chicken;              /* Forward class declaration. */
class Egg {
 public:
    Chicken* getParent();   /* Okay in declarations if they are pointers. */ 
};
//end
#endif        //  #ifndef EGG_H
codice:
// egg.cpp
#include "chicken.h"
#include "egg.h"

Chicken* Egg::getParent() {
    return new Chicken(); /* Requires definition of Chicken. */   
}