fork download
  1. #include <cstdio>
  2. // ---------------------------------------------------------> базовый класс <---
  3. class ModelDevice
  4. {
  5. public:
  6. /// Конструктор
  7. ModelDevice ()
  8. {
  9. // неважно
  10. }
  11. /// Деструктор
  12. virtual ~ModelDevice ()
  13. {
  14. // неважно
  15. }
  16. };
  17. // -------------------------------------------------------------> интерфейс <---
  18. class Angle
  19. {
  20. public:
  21. /// Получить угловое положение
  22. virtual int getAngle (float &angle) = 0;
  23. /// Получить угловую скорость
  24. virtual int getVelocity (float &velocity) = 0;
  25. virtual ~Angle()=default;
  26. };
  27. // ----------------------------------------------------> собсно, реализация <---
  28. class ModelAngle: public ModelDevice, public Angle
  29. {
  30. public:
  31. /// Код оси
  32. enum AXIS
  33. {
  34. AZ, ///< азимут
  35. EL ///< угол места
  36. };
  37. /// Конструктор
  38. ModelAngle (int a) :
  39. axis (a)
  40. {
  41. fprintf(stderr, "ModelAngle = %X\n", this);
  42. }
  43. /// Деструктор
  44. virtual ~ModelAngle ()
  45. {
  46. // ну тут типа реализация
  47. }
  48. /// Получить угловое положение
  49. int getAngle (float &angle) override
  50. {
  51. // ну тут типа реализация
  52. }
  53. /// Получить угловую скорость
  54. int getVelocity (float &velocity) override
  55. {
  56. // ну тут типа реализация
  57. }
  58. protected:
  59. int axis;
  60. };
  61. // -----------------------------------------------------> ну и что ж я вижу <---
  62. int main(int argc, char *argv[])
  63. {
  64. Angle *angle = new ModelAngle(ModelAngle::AZ);
  65. fprintf(stderr, "angle = %X\n", angle);
  66.  
  67. delete(angle);
  68. }
Success #stdin #stdout #stderr 0s 16048KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ModelAngle = 7A714C20
angle = 7A714C28