You can't forward-declare a nested class like that.
Depending on what you're trying to do, maybe you can use a namespace rather than a class on the outer layer.  You can forward-declare such a class no problem:
namespace Outer {
   struct Inner; 
};
Outer::Inner* sweets;  // Outer::Inner is incomplete so 
                       // I can only make a pointer to it
If your Outer absolutely must be a class, and you can't shoe-horn it into a namespace, then you'll need for Outer to be a complete type in the context where you forward declare Inner.  
class Outer
{
   class Inner;  // Inner forward-declared
};  // Outer is fully-defined now
Outer yes;  // Outer is complete, you can make instances of it
Outer::Inner* fun;  // Inner is incomplete, you can only make 
                    // pointers/references to it
class Outer::Inner 
{
};  // now Inner is fully-defined too
Outer::Inner win;  // Now I can make instances of Inner too