#include #include class NaturalNumbers { char* name; unsigned nameLength; int* elements; unsigned elementsCount; unsigned elementsLength; void copyFrom(const NaturalNumbers& other); void free(); void move(NaturalNumbers&& other); void resize(); int indexOfNum(int number) const; public: NaturalNumbers(); NaturalNumbers(const int* elements, unsigned elementsCount, const char* name); ~NaturalNumbers(); NaturalNumbers(const NaturalNumbers& other); NaturalNumbers& operator=(const NaturalNumbers& other); bool operator[](int number) const; NaturalNumbers& operator+=(const NaturalNumbers& other); const int* get_elements() const; bool addElement(int number); unsigned get_elementsCount() const; const char* get_name() const; void set_name(const char* newName); }; NaturalNumbers operator+(const NaturalNumbers& lhs, const NaturalNumbers& rhs); std::ostream& operator<<(std::ostream& ostr, const NaturalNumbers& numbers); std::istream& operator>>(std::istream& istr, NaturalNumbers& numbers);