class X {};

class Y {
public:
    typedef X Z;                                                  //(A)
    enum Weight { light, medium, heavy };                         //(B)
private:
    Z zobj;
    Weight weight;
};

int main() {
    // Z zobj;                      // error
    Y::Z zobj;                      // ok
    // Weight w = medium;           // error
    // Y::Weight w = medium;        // error
    Y::Weight w = Y::medium;        // ok
    return 0;
}