fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int step_amounts[3] = {1000, 3000, 5000};
  6. string step_names[3] = {"A", "B", "C"};
  7.  
  8. struct Stependy
  9. {
  10. short id;
  11. int amount;
  12. string name;
  13.  
  14. Stependy(short id)
  15. : id(id), amount(step_amounts[id-1]), name(step_names[id-1])
  16. {}
  17.  
  18. Stependy(short id, int amount)
  19. : id(id), amount(amount), name(step_names[id-1])
  20. {}
  21.  
  22. Stependy(short id, int amount, string name)
  23. : id(id), amount(amount), name(name)
  24. {}
  25. };
  26.  
  27. struct Student
  28. {
  29. string fname;
  30. string sname;
  31. Stependy stependy;
  32.  
  33. template <typename ...S>
  34. Student(string fname, string sname, S &&...s)
  35. : fname(fname), sname(sname), stependy(forward<S>(s)...)
  36. {}
  37. };
  38.  
  39.  
  40. int main()
  41. {
  42. Student students[] =
  43. {
  44. Student("Abc", "Def", 2),
  45. Student("Aaa", "Ddd", 2, 2000),
  46. Student("Bbb", "Eee", 2, 4000, "other"),
  47. Student("Ccc", "Fff", 4, 7000, "qqq")
  48. };
  49.  
  50. for (auto st : students)
  51. cout << st.fname << ' ' << st.sname << ' ' << st.stependy.id << ' ' << st.stependy.amount << ' ' << st.stependy.name << endl;
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0s 4396KB
stdin
Standard input is empty
stdout
Abc Def 2 3000 B
Aaa Ddd 2 2000 B
Bbb Eee 2 4000 other
Ccc Fff 4 7000 qqq