Ошибка в том, что вы не предоставили конструктор, который принимает char*
.Это функция преобразования, о которой жалуется компилятор за отсутствие.
StdString::StdString(char const* s)
{
// ...
}
Кроме того, если ваша внутренняя строка - std::string
, то вам не нужны никакие операторы присваивания, конструктор копирования и деструктор.Как только вы добавите конструктор преобразования char*
, предоставленный компилятором оператор присваивания будет магически работать и для char*
.Ну, не совсем волшебно: компилятор увидит, что он может преобразовать char *
в StdString
через ваш конструктор преобразования, а затем использовать это с оператором неявного присваивания.
Вы также можете оставить значение по умолчаниюопределение конструктора пустое;это даст вам конструкцию по умолчанию для всех участников, что, вероятно, достаточно хорошо.