Listing 2

class MatrixMovie
{
private:
    enum {Matrix, MatrixReloaded, MatrixRevolutions} value_;

public:
    // member functions and overloaded operators...
};

enum {Matrix, MatrixReloaded, MatrixRevolutions}; // duplicate

// You may use either scoped or unscoped syntax:
MatrixMovie mm=MatrixMovie::Matrix;
MatrixMovie mm=Matrix;