diff options
author | WBoerenkamps <wrj.boerenkamps@student.avans.nl> | 2024-12-11 14:33:12 +0100 |
---|---|---|
committer | WBoerenkamps <wrj.boerenkamps@student.avans.nl> | 2024-12-11 14:33:12 +0100 |
commit | 68bf20b491b4b7673c2ece7a6497b9faffd44eb1 (patch) | |
tree | ec0aa56081bc744b595f1665f048c4d26242884f /src/crepe/util | |
parent | f64b793ad8e796458c8e175f298e8d13eb3b3459 (diff) | |
parent | 78c4a8772526f40c531b5402b56932b0a41e22e8 (diff) |
feedback but error after conflict
Diffstat (limited to 'src/crepe/util')
-rw-r--r-- | src/crepe/util/OptionalRef.h | 10 | ||||
-rw-r--r-- | src/crepe/util/OptionalRef.hpp | 7 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/crepe/util/OptionalRef.h b/src/crepe/util/OptionalRef.h index 3201667..1b2cb3f 100644 --- a/src/crepe/util/OptionalRef.h +++ b/src/crepe/util/OptionalRef.h @@ -25,7 +25,7 @@ public: */ OptionalRef<T> & operator=(T & ref); /** - * \brief Retrieve this reference + * \brief Retrieve this reference (cast) * * \returns Internal reference if it is set * @@ -33,6 +33,14 @@ public: */ operator T &() const; /** + * \brief Retrieve this reference (member access) + * + * \returns Internal reference if it is set + * + * \throws std::runtime_error if this function is called while the reference it not set + */ + T * operator->() const; + /** * \brief Check if this reference is not empty * * \returns `true` if reference is set, or `false` if it is not diff --git a/src/crepe/util/OptionalRef.hpp b/src/crepe/util/OptionalRef.hpp index 4608c9e..5e36b3a 100644 --- a/src/crepe/util/OptionalRef.hpp +++ b/src/crepe/util/OptionalRef.hpp @@ -19,6 +19,13 @@ OptionalRef<T>::operator T &() const { } template <typename T> +T * OptionalRef<T>::operator->() const { + if (this->ref == nullptr) + throw std::runtime_error("OptionalRef: attempt to dereference nullptr"); + return this->ref; +} + +template <typename T> OptionalRef<T> & OptionalRef<T>::operator=(T & ref) { this->ref = &ref; return *this; |