home *** CD-ROM | disk | FTP | other *** search
- // \EXAMPLES\EX09081.H
- // definition of class Grade
-
- // Files used in this example:
- //--------------------------------------------------------
- // EX09081.H this file
- // %F,15,EX09081.CPP%EX09081.CPP members of class Grade
- // %F,15,EX0908.CPP%EX0908.CPP main() function
- //--------------------------------------------------------
-
- // Used to store a pair of integers
- typedef struct { long first, second;} LongPair;
-
-
- //---------------------------------------------------------
- // The Grades Class manages an associative array of grades
- //---------------------------------------------------------
- class Grade
- {
- public:
- // Used to associate a letter grade to a numeric grade
- // range
- typedef struct
- {
- char letter[4]; // Used to store a letter grade
- LongPair range; // Used to store a numeric grade range
- } GradeAssoc;
-
- static const LongPair null;
-
- //------------------------------------------------------
- // FUNCTION: operator[]
- // PARAMETERS: char * p A letter grade
- // Return Value: LongPair A numeric range
- //------------------------------------------------------
- LongPair
- operator[]( char* p);
-
- //------------------------------------------------------
- // FUNCTION: operator[]
- // PARAMETERS: LongPair A numeric range
- // RETURN VALUE: char * p A letter grade
- //------------------------------------------------------
- char*
- Grade::operator[]( int x);
-
- //------------------------------------------------------
- // FUNCTION: NumElem
- // RETURN VALUE: The number of grades in the associative
- // array
- //------------------------------------------------------
- const int
- NumElem() const { return 5;}
-
- private:
- //------------------------------------------------------
- // The associative array of Numeric grade ranges and Letter
- // grades
- //------------------------------------------------------
- static GradeAssoc GradeList[];
-
- //------------------------------------------------------
- // Used to compare two Letter grades
- //------------------------------------------------------
- // friend int _Optlink // IBM CSet II version
- // CompareLetter( const void* keyval, const void* datum);
- friend int // Borland and Microsoft version
- CompareLetter( const void* keyval, const void* datum);
-
- };
-
-
- ostream&
- operator<<( ostream& os, LongPair range);
-
-
- ostream&
- operator<<( ostream& os, Grade::GradeAssoc assoc);
-