fork download
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. template <class Type>
  5. class Verem
  6. {
  7. int meret;
  8. Type *verem;
  9. int sp;
  10.  
  11. public:
  12.  
  13. Verem (int m = 3):meret (m), verem (new Type[m])
  14. {
  15. sp = -1;
  16. }
  17.  
  18. Verem (Verem& v):meret (v.meret), verem (new Type[v.meret])
  19. {
  20. std::cout << "[" << std::setw(13) << std::setfill('.') << &verem << "]: Konstruktor {++}" << std::endl;
  21.  
  22. sp = v.sp;
  23.  
  24. for (int i = 0; i < v.meret; ++i)
  25. {
  26. std::cout << " i: " << i << "; Masolas elott: $$$$$$$$$$$$$$$" << std::endl;
  27. verem[i] = v.verem[i];
  28. std::cout << " i: " << i << "; Masolas utan: ..............." << std::endl;
  29. }
  30.  
  31. std::cout << "[" << std::setw(13) << std::setfill('.') << &verem << "]: Konstruktor {--}" << std::endl;
  32.  
  33. }
  34.  
  35. ~Verem ()
  36. {
  37. std::cout << "[" << std::setw(13) << std::setfill('.') << &verem << "]: DESTRUKTOR." << std::endl;
  38. delete[] verem;
  39. }
  40.  
  41. Verem& operator=(Verem& v)
  42. {
  43. std::cout << "[" << std::setw(13) << std::setfill('.') << &verem << "]: Masolo {++}" << std::endl;
  44. Type *ujverem = new Type[v.meret];
  45. sp = v.sp;
  46. meret = v.meret;
  47.  
  48. for (int i = 0; i < v.meret; ++i)
  49. {
  50. std::cout << " i: " << i << "; Masolas elott: ///////////////" << std::endl;
  51. ujverem[i] = v.verem[i];
  52. std::cout << " i: " << i << "; Masolas elott: _______________" << std::endl;
  53. }
  54. delete[] verem;
  55. verem = ujverem;
  56.  
  57. std::cout << "[" << std::setw(13) << std::setfill('.') << &verem << "]: Masolo {--}" << std::endl;
  58.  
  59. return *this;
  60. }
  61.  
  62. Type& operator[](int i)
  63. {
  64. return verem[i];
  65. }
  66.  
  67. Type pop ()
  68. {
  69. return verem[sp--];
  70. }
  71.  
  72. void push(Type data)
  73. {
  74. std::cout << " # Push {++}" << std::endl;
  75. verem[++sp] = data;
  76. std::cout << " # Push {--}" << std::endl;
  77. }
  78.  
  79. int getMeret()
  80. {
  81. return meret;
  82. }
  83.  
  84. int getDarab()
  85. {
  86. return sp + 1;
  87. }
  88.  
  89. Type* getAddress()
  90. {
  91. return &verem[0];
  92. }
  93.  
  94. friend std::ostream& operator<<(std::ostream& os, Verem& v)
  95. {
  96. os << "[ " << v.getMeret() << ", " << v.getDarab() << " | ";
  97. int mennyi = v.getDarab();
  98. for (int i = 0; i < mennyi; ++i)
  99. os << v[i] << ", ";
  100. os << " ]";
  101. return os;
  102. }
  103. };
  104.  
  105. int main(int argc, char *argv[])
  106. {
  107. Verem<char> v(4), u(5);
  108. Verem< Verem<char> > vv(6), uu(7);
  109.  
  110. v.push('0');
  111. v.push('1');
  112.  
  113. u.push('2');
  114. u.push('3');
  115.  
  116. vv.push(v);
  117. vv.push(v);
  118.  
  119. uu.push(u);
  120. uu.push(u);
  121.  
  122. std::cout << "u: " << u << std::endl;
  123.  
  124. u = v;
  125.  
  126. std::cout << "v: " << v << std::endl;
  127. std::cout << "u: " << u << std::endl;
  128.  
  129. std::cout << "uu: " << uu << std::endl;
  130.  
  131. uu = vv;
  132.  
  133. std::cout << "vv: " << vv << std::endl;
  134. std::cout << "uu: " << uu << std::endl;
  135.  
  136. return 0;
  137. }
  138.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cs(2,0): error CS1024: Wrong preprocessor directive
prog.cs(3,0): error CS1024: Wrong preprocessor directive
prog.cs(4,10): error CS8025: Parsing error
Compilation failed: 3 error(s), 0 warnings
stdout
Standard output is empty