(S)ound (D)evelopment (I)nvention logo
//! Enummeration of gender types enum EGenderType { EGT_FEMALE = 0, EGT_MALE, EGT_TRANNY, // =) /* ... */ }; //! Enummeration of language types enum ELanguageType { ELT_GERMAN = 0, ELT_ENGLISH, ELT_RUSSIAN, ELT_OTHERS, }; //! Base class Human class Human { public: Human(const std::string &_bdate, EGenderType _type, ELanguageType _langType) : m_birthDate(bdate), m_gender(_type), m_nativeLanguage(_langType) {} virtual ~Human() {} virtual void addLanguage(ELanguageType _type) { m_languages.push_back(_type); } private: std::string m_birthDate; EGenderType m_gender; ELanguageType m_nativeLanguage; std::vector<ELanguageType> m_languages; }; //! Class Sdi implementation class Sdi : public Human { public: Sdi() : Human("14.10.1976", EGT_MALE, ELT_GERMAN) {} virtual ~Sdi() {} protected: private: int m_age; EGenderType m_eGender; };