Finance manager
Лабораторна робота №2 - Документація коду
Loading...
Searching...
No Matches
Result.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <stdexcept> // Для std::runtime_error
5#include <utility> // Для std::move
6
25template <typename T>
26class Result {
27private:
30 std::string m_error;
31
40 Result(bool success, T value, std::string error)
41 : m_is_success(success), m_value(std::move(value)), m_error(std::move(error)) {}
42
43public:
49 static Result<T> success(T value) {
50 return Result(true, std::move(value), "");
51 }
52
58 static Result<T> error(const std::string& error_message) {
59 return Result(false, T{}, error_message); // T{} створює значення за замовчуванням
60 }
61
66 bool is_success() const {
67 return m_is_success;
68 }
69
80 const T& get_value() const {
81 if (!m_is_success) {
82 throw std::runtime_error("Attempted to get value from a failed Result: " + m_error);
83 }
84 return m_value;
85 }
86
93 const std::string& get_error() const {
94 return m_error;
95 }
96};
Шаблонний клас, що інкапсулює результат операції, яка може бути успішною (з даними) або невдалою (з п...
Definition Result.h:26
const T & get_value() const
Отримує значення з успішного результату.
Definition Result.h:80
T m_value
Значення (payload) у разі успіху.
Definition Result.h:29
bool m_is_success
Прапорець, що показує, чи успішна операція.
Definition Result.h:28
Result(bool success, T value, std::string error)
Приватний конструктор.
Definition Result.h:40
static Result< T > success(T value)
Статичний фабричний метод для створення успішного результату.
Definition Result.h:49
const std::string & get_error() const
Отримує повідомлення про помилку з невдалого результату.
Definition Result.h:93
std::string m_error
Рядок з описом помилки у разі невдачі.
Definition Result.h:30
static Result< T > error(const std::string &error_message)
Статичний фабричний метод для створення невдалого результату (помилки).
Definition Result.h:58
bool is_success() const
Перевіряє, чи є результат успішним.
Definition Result.h:66