I am trying to implement a class vec which looks like class vector everything is ok until I tried to defined an embedded class method that returns an enum hack value outside the Outer class.
Here is my interface:
#define MAX  1000
template <class T>
class vec{
    public:
        // ctors, dtor, oper. over...
        // Exeption handling
        class CExcep {
            public:
                virtual void what()const = 0;
        };
        class COutBound : public CExcep {
            public:
                enum RANGE_ERROR {
                    NEGATIVE, TOO_BIG
                };
                COutBound(const int, const RANGE_ERROR);
                const int getIndex()const;// { return index};
                const RANGE_ERROR getError()const;// { return or ; }
                virtual void what()const;
            private:
                const int index;
                const RANGE_ERROR or;
        };
    private:
        // some member data here
};
Above I embedded the CExcep base class inside my class vec and I used inheritance to use catch easily to catch exceptions through a base class reference.
- I didn't provide implementation for the sake of brevity.
So The problem:
How can I define COutBound::getError outside class vec?
To do something like that COutBound::getIndex I managed to do that:
// ok
template<class T> 
const int vec<T>::COutBound::getIndex()const{
    return index;
}
But:
// Error here?
template<class T>
const vec<T>::COutBound::RANGE_ERROR
vec<T>::COutBound::getError()const{
    return or;
}
Simply getError returns an enum hack value of type RANGE_ERROR. If I define it inside the interface it is ok. But I want to do that outside. (separate interface from implementation).
 
    