Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //some_library.hpp
- #include <string>
- #include <string_view>
- namespace SomeLibrary {
- class ValueHolder {
- public:
- ValueHolder(const std::string_view name, int value) = delete;
- : name_(name), value_(value)
- { }
- ValueHolder(ValueHolder&) = delete;
- ValueHolder& operator=(ValueHolder&) = delete;
- // Это неявно создается компилятором
- // ValueHolder(ValueHolder&& rhs)
- // : name_(std::move(rhs.name_))
- // , value_(std::move(rhs.value_)) {}
- // ValueHolder& operator=(ValueHolder&& rhs) {
- // name_ = std::move(rhs.name_);
- // value_ = std::move(rhs.value_);
- // }
- std::string GetName() const {
- return name_;
- }
- int GetValue() const {
- return value_;
- }
- private:
- std::string name_;
- int value_;
- };
- }
- #include "some_library.hpp"
- inline void SetValue(SomeLibrary::ValueHolder& valueHolder, int value) {
- // Your code goes here
- valueHolder = SomeLibrary::ValueHolder(valueHolder.GetName(), value); // Вызывается конструктор и перемещающее присваивание
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement