fork download
  1. //Code001
  2. template <class T>
  3. class className
  4. {
  5. //... .. ...
  6. public:
  7. T var;
  8. T someOperation(T arg);
  9. //... .. ...
  10. };
  11.  
  12. //===============================================================================================//
  13. //Code002
  14. className<int> classObject;
  15. className<float> classObject;
  16. className<string> classObject;
  17.  
  18.  
  19. //===============================================================================================//
  20. //Code003
  21. #include <iostream>
  22. #include <vector>
  23. #include <cstdlib>
  24. #include <string>
  25. #include <stdexcept>
  26.  
  27. using namespace std;
  28.  
  29. template <class T>
  30. class Stack {
  31. private:
  32. vector<T> elems; // cac phan tu
  33.  
  34. public:
  35. void push(T const&); // push phan tu vao stack
  36. void pop(); // phan tu pop
  37. T top() const; // tra ve phan tu tren cung
  38.  
  39. bool empty() const { // tra ve true neu trong
  40. return elems.empty();
  41. }
  42. };
  43.  
  44. template <class T>
  45. void Stack<T>::push(T const& elem) {
  46. // append copy of passed element
  47. elems.push_back(elem);
  48. }
  49.  
  50. template <class T>
  51. void Stack<T>::pop() {
  52. if (elems.empty()) {
  53. throw out_of_range("Stack<>::pop(): empty stack");
  54. }
  55.  
  56. // xoa phan tu cuoi cung
  57. elems.pop_back();
  58. }
  59.  
  60. template <class T>
  61. T Stack<T>::top() const {
  62. if (elems.empty()) {
  63. throw out_of_range("Stack<>::top(): empty stack");
  64. }
  65.  
  66. // tra ve ban copy cua phan tu cuoi cung
  67. return elems.back();
  68. }
  69.  
  70. int main() {
  71. try {
  72. Stack<int> intStack;
  73. Stack<string> stringStack;
  74.  
  75. // push int vao stack
  76. intStack.push(7);
  77. cout << intStack.top() << endl;
  78.  
  79. // push string vao stack
  80. stringStack.push("hello");
  81. cout << stringStack.top() << std::endl;
  82. stringStack.pop();
  83. stringStack.pop();
  84. }
  85. catch (exception const& ex) {
  86. cerr << "Exception: " << ex.what() << endl;
  87. return -1;
  88. }
  89. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:15:18: error: conflicting declaration ‘className<float> classObject’
 className<float> classObject;
                  ^~~~~~~~~~~
prog.cpp:14:16: note: previous declaration as ‘className<int> classObject’
 className<int> classObject;
                ^~~~~~~~~~~
prog.cpp:16:11: error: ‘string’ was not declared in this scope
 className<string> classObject;
           ^~~~~~
prog.cpp:16:11: note: suggested alternative: ‘stdin’
 className<string> classObject;
           ^~~~~~
           stdin
prog.cpp:16:17: error: template argument 1 is invalid
 className<string> classObject;
                 ^
prog.cpp:16:19: error: conflicting declaration ‘int classObject’
 className<string> classObject;
                   ^~~~~~~~~~~
prog.cpp:14:16: note: previous declaration as ‘className<int> classObject’
 className<int> classObject;
                ^~~~~~~~~~~
stdout
Standard output is empty