diff options
clean up
2 files changed, 0 insertions, 126 deletions
| -rw-r--r-- | Utills/si_14.06/task1/Optional/Optional.hpp | 109 | ||||
| -rw-r--r-- | Utills/si_14.06/task1/Source.cpp | 17 |
diff --git a/Utills/si_14.06/task1/Optional/Optional.hpp b/Utills/si_14.06/task1/Optional/Optional.hpp deleted file mode 100644 index cf1ec0d..0000000 --- a/Utills/si_14.06/task1/Optional/Optional.hpp +++ /dev/null @@ -1,109 +0,0 @@ -#include <iostream> - -template <typename T> -class Optional -{ - T* objPtr; - - void copyFrom(const Optional<T>& other); - void free(); - -public: - Optional(); - Optional(const T& obj); - - Optional(const Optional& other); - Optional<T>& operator=(const Optional<T>& other); - - ~Optional(); - - void setValue(const T& obj); - T getValue() const; - - bool containsValue() const; - - bool operator==(const Optional<T>& other) const; - bool operator!=(const Optional<T>& other) const; -}; - -template <typename T> -Optional<T>::Optional() : objPtr(nullptr) -{}; - -template <typename T> -Optional<T>::Optional(const T& obj) -{ - objPtr = new T(obj); -} - -template <typename T> -void Optional<T>::setValue(const T& obj) -{ - delete objPtr; - objPtr = new T(obj); -} - -template <typename T> -T Optional<T>::getValue() const -{ - if (!obj) - throw std::exception("No value assigned!"); - return *objPtr; -} - -template <typename T> -bool Optional<T>::containsValue() const -{ - return objPtr != nullptr; -} - -template <typename T> -void Optional<T>::copyFrom(const Optional<T>& other) -{ - if (!other.obj) - objPtr = nullptr; - else - objPtr = new T(*other.obj); -} - -template <typename T> -void Optional<T>::free() -{ - delete objPtr; -} - -template <typename T> -Optional<T>::Optional(const Optional<T>& other) -{ - copyFrom(other); -} - -template <typename T> -Optional<T>& Optional<T>::operator=(const Optional<T>& other) -{ - if (this != &other) - { - free(); - copyFrom(other); - } - - return *this; -} - -template <typename T> -Optional<T>::~Optional() -{ - free(); -} - -template <typename T> -bool Optional<T>::operator==(const Optional<T>& other) const -{ - return (!objPtr && !other.objPtr) || (objPtr && other.objPtr && *objPtr == *other.objPtr); -} - -template <typename T> -bool Optional<T>::operator!=(const Optional<T>& other) const -{ - return !operator==(other); -} diff --git a/Utills/si_14.06/task1/Source.cpp b/Utills/si_14.06/task1/Source.cpp deleted file mode 100644 index d8397a0..0000000 --- a/Utills/si_14.06/task1/Source.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include <iostream> -#include "Optional/Optional.hpp" - - - -int main() -{ - Optional<int> o; - - std::cout << o.containsValue() << std::endl; - - o.setValue(12); - - Optional<int> o2(12); - - std::cout << (o == o2) << std::endl; -}
\ No newline at end of file |
