aboutsummaryrefslogtreecommitdiff
path: root/week11/Exercise05
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2024-05-10 10:10:21 +0300
committerSyndamia <kamen@syndamia.com>2024-05-10 10:10:21 +0300
commit7b19cabee8b08478f31f6e4594ed28e1d04e153c (patch)
tree3574b2c3fd75ab66701def640fe7476651236184 /week11/Exercise05
parent437e306dc9b79905105fb2e8af6dd1eae1b908ae (diff)
downloadoop-2023-solutions-7b19cabee8b08478f31f6e4594ed28e1d04e153c.tar
oop-2023-solutions-7b19cabee8b08478f31f6e4594ed28e1d04e153c.tar.gz
oop-2023-solutions-7b19cabee8b08478f31f6e4594ed28e1d04e153c.zip
[w11] Solved exercises
Diffstat (limited to 'week11/Exercise05')
-rw-r--r--week11/Exercise05/Counted.hpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/week11/Exercise05/Counted.hpp b/week11/Exercise05/Counted.hpp
new file mode 100644
index 0000000..fe705ab
--- /dev/null
+++ b/week11/Exercise05/Counted.hpp
@@ -0,0 +1,64 @@
+#pragma once
+
+template <class T>
+class Counted {
+ T elem;
+ unsigned count;
+
+public:
+ T& GetElem();
+ unsigned GetCount();
+
+ Counted& operator++();
+ Counted operator++(int);
+ Counted& operator--();
+ Counted operator--(int);
+ Counted& operator+=(int countChange);
+ Counted& operator-=(int countChange);
+};
+
+template <class T>
+T& Counted<T>::GetElem() {
+ return elem;
+}
+
+template <class T>
+unsigned Counted<T>::GetCount() {
+ return count;
+}
+
+template <class T>
+Counted<T>& Counted<T>::operator++() {
+ ++count;
+ return *this;
+}
+
+template <class T>
+Counted<T> Counted<T>::operator++(int) {
+ count++;
+ return *this;
+}
+
+template <class T>
+Counted<T>& Counted<T>::operator--() {
+ --count;
+ return *this;
+}
+
+template <class T>
+Counted<T> Counted<T>::operator--(int) {
+ count--;
+ return *this;
+}
+
+template <class T>
+Counted<T>& Counted<T>::operator+=(int countChange) {
+ count += countChange;
+ return *this;
+}
+
+template <class T>
+Counted<T>& Counted<T>::operator-=(int countChange) {
+ count -= countChange;
+ return *this;
+}