- What is advantage of implementing inner classes as separate classes with name space in C++?
- Will there be any added advantage with Approach-1?
- Pros & Cons with both approaches? - Approach-1: using namespace 
MyInnerClass.h
namespace inner{
class MyInnerClass
{
    public:
    MyInnerClass();
    virtual ~MyInnerClass();
};
};
MyInnerClass.cpp
#include "MyInnerClass.h"
namespace inner
{
MyInnerClass::MyInnerClass()
{
}
MyInnerClass::~MyInnerClass()
{
}
}
MyOuterClass.h
#include "MyInnerClass.h"
namespace inner{
    class MyInnerClass;
};
class MyOuterClass
{
    public:
        MyOuterClass();
        virtual ~MyOuterClass();
    private:
        inner::MyInnerClass* ptrMyInnerClass;
};
MyOuterClass.cpp
#include "MyOuterClass.h"
MyOuterClass::MyOuterClass()
{
    ptrMyInnerClass= new inner::MyInnerClass();
}
MyOuterClass::~MyOuterClass()
{
}
Approach-2: implementing as real inner classes
class MyOuterClass
{
/*  Inner Class */
    public:
        class MyInnerClass
        {
            public:
                MyInnerClass() {}
                virtual ~MyInnerClass() {}
        };
    public:
        MyOuterClass();
        virtual ~MyOuterClass();
    private:
        MyInnerClass* ptrMyInnerClass;
};
 
     
     
    