файл "string.h" включил, и <cstring>, но все равно вижла ругается и выдает какие-то ошибки. Предлагает использовать strcpy_s, но потом говорит что отсутствует экземпляры перегруженнной функции. Как быть?
#include "string.h"
#include <cstring>
class RuleOfThree
{
private:
char* cstring;
public:
//конструктор по-умолчанию
RuleOfThree() : cstring(nullptr) {}
//конструктор с параметром
RuleOfThree(const char* cstr);
//конструктор копирования
RuleOfThree(const RuleOfThree& objects);
//конструктор перемещения
//деструктор для освобождения памяти
~RuleOfThree() { delete[] cstring; }
//перегружаем оператор вывода <<
friend std::ostream &operator<<(std::ostream &output, const RuleOfThree& object);
};
RuleOfThree::RuleOfThree(const char* cstr)
{
cstring = new char[strlen(cstr) + 1]; //выделяем память под строку и под завершающий символ '\0'
strcpy_s(cstring, cstr); //копируем содержимое строки cstr в поле cstring
}
RuleOfThree::RuleOfThree(const RuleOfThree& objects)
{
cstring = new char(strlen(objects.cstring) + 1); //выделяем память под строку и под завершающий символ '\0'
strcpy_s (cstring, objects.cstring);
}
std::ostream& operator<<(std::ostream& output, const RuleOfThree& object)
{
return output << object.cstring;
}
int main()
{
RuleOfThree str = "Hello World";
std::cout << str << std::endl;
return 0;
}
Какие-то это какие? Озвучить способны?
Обсуждают сегодня