Как создать char* через умные указатели
Header file:
std::shared_ptr<char*> string;
Cpp file:
char* str = "hi!";
string = make_shared<char*>(str);
Поучаю ошибку: не существует подходящей функции преобразования из "std::shared_ptr<char *>" в "char *
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Варианты:
std::shared_ptr<const char*> string;
const char* str = "hi!";
string = make_shared<const char*>(str);
или
std::shared_ptr<char*> string;
char str[] = "hi!";
string = make_shared<char*>(str);
Строковый литерал не может не быть const.
Вот только выглядит shared_ptr<char*> странно. Странно, чтоб не сказать большего. Зачем? Что вы хотите этим добиться?
Автор решения: KoVadim
→ Ссылка
Первый способ
std::shared_ptr<const char*> string;
const char* str = "hi!";
string = make_shared<const char*>(str);
Второй способ пофиксить - использоваться с++ подходы - std::string
const char* str = "hi!";
std::shared_ptr<std::string> sstr = std::make_shared<std::string>(str);
а если где то понадобится именно указатель на char, тогда вот так sstr->c_str();
А возможно, Вам просто нужна обычная строка std::string.