1
0

studenti.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // studenti.h -- defining a Student class using private inheritance
  2. #ifndef STUDENTC_H_
  3. #define STUDENTC_H_
  4. #include <iostream>
  5. #include <valarray>
  6. #include <string>
  7. class Student : private std::string, private std::valarray<double>
  8. {
  9. private:
  10. typedef std::valarray<double> ArrayDb;
  11. // private method for scores output
  12. std::ostream & arr_out(std::ostream & os) const;
  13. public:
  14. Student() : std::string("Null Student"), ArrayDb() {}
  15. explicit Student(const std::string & s)
  16. : std::string(s), ArrayDb() {}
  17. explicit Student(int n) : std::string("Nully"), ArrayDb(n) {}
  18. Student(const std::string & s, int n)
  19. : std::string(s), ArrayDb(n) {}
  20. Student(const std::string & s, const ArrayDb & a)
  21. : std::string(s), ArrayDb(a) {}
  22. Student(const char * str, const double * pd, int n)
  23. : std::string(str), ArrayDb(pd, n) {}
  24. ~Student() {}
  25. double Average() const;
  26. double & operator[](int i);
  27. double operator[](int i) const;
  28. const std::string & Name() const;
  29. // friends
  30. // input
  31. friend std::istream & operator>>(std::istream & is,
  32. Student & stu); // 1 word
  33. friend std::istream & getline(std::istream & is,
  34. Student & stu); // 1 line
  35. // output
  36. friend std::ostream & operator<<(std::ostream & os,
  37. const Student & stu);
  38. };
  39. #endif