// file : inheritance/polymorphism/employee.hxx // copyright : not copyrighted - public domain #ifndef EMPLOYEE_HXX #define EMPLOYEE_HXX #include <string> #include <odb/core.hxx> #pragma db object polymorphic class person { public: person (const std::string& first, const std::string& last) : first_ (first), last_ (last) { } const std::string& first () const { return first_; } const std::string& last () const { return last_; } virtual ~person () = 0; virtual void print () = 0; protected: friend class odb::access; person () {} #pragma db id auto unsigned long id_; std::string first_; std::string last_; }; #pragma db object class employee: public person { public: employee (const std::string& first, const std::string& last, bool temporary) : person (first, last), temporary_ (temporary) { } bool temporary () const { return temporary_; } void temporary (bool t) { temporary_ = t; } virtual void print (); private: friend class odb::access; employee () {} bool temporary_; }; #pragma db object class contractor: public person { public: contractor (const std::string& first, const std::string& last, const std::string& email) : person (first, last), email_ (email) { } const std::string& email () const { return email_; } virtual void print (); private: friend class odb::access; contractor () {} std::string email_; }; #endif // EMPLOYEE_HXX