Как создать 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.

→ Ссылка