Advertisement
Derga

Untitled

Mar 3rd, 2023
625
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. //some_library.hpp
  2.  
  3. #include <string>
  4. #include <string_view>
  5.  
  6. namespace SomeLibrary {
  7.     class ValueHolder {
  8.     public:
  9.         ValueHolder(const std::string_view name, int value) = delete;
  10.           : name_(name), value_(value)
  11.         { }
  12.  
  13.         ValueHolder(ValueHolder&) = delete;
  14.         ValueHolder& operator=(ValueHolder&) = delete;
  15.        
  16.         // Это неявно создается компилятором
  17.         // ValueHolder(ValueHolder&& rhs)
  18.         // : name_(std::move(rhs.name_))
  19.         // , value_(std::move(rhs.value_)) {}
  20.  
  21.         // ValueHolder& operator=(ValueHolder&& rhs) {
  22.         //     name_ = std::move(rhs.name_);
  23.         //     value_ = std::move(rhs.value_);
  24.         // }
  25.  
  26.         std::string GetName() const {
  27.             return name_;
  28.         }
  29.  
  30.         int GetValue() const {
  31.             return value_;
  32.         }
  33.     private:
  34.         std::string name_;
  35.         int value_;
  36.     };
  37. }
  38.  
  39. #include "some_library.hpp"
  40.  
  41. inline void SetValue(SomeLibrary::ValueHolder& valueHolder, int value) {
  42.     // Your code goes here
  43.     valueHolder = SomeLibrary::ValueHolder(valueHolder.GetName(), value); // Вызывается конструктор и перемещающее присваивание
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement