ошибка: требуется преобразование из 'Mstream' в нескалярный тип 'std :: string {aka std :: basic_string <char>}' - PullRequest
0 голосов
/ 05 октября 2019

Не могли бы вы помочь мне исправить ошибку в следующем коде.

class Mstream{
     unsigned int len;
     char *str;
};

int main(){
   Mstream m1;
   std::string str=m1;// i see error at this statement
}

ошибка:

преобразование из 'Mstream' в нескалярный тип 'std:: строка {aka std :: basic_string } 'запрошена

1 Ответ

0 голосов
/ 05 октября 2019

std::string не имеет конструктора или operator=, который принимает Mstream в качестве ввода. Однако он имеет конструктор, который принимает char* и размер в качестве входных данных:

int main(){
    Mstream m1;
    std::string str(m1.str, m1.len);
}

В качестве альтернативы, вы можете добавить std::string оператор преобразования к Mstream, затем вы можете назначить Mstream до std::string:

class Mstream{
    unsigned int len;
    char *str;
    operator std::string() const { return std::string(str, len); }
};

int main(){
    Mstream m1;
    std::string str = m1;
}

В любом случае, убедитесь, что Mstream правильно инициализирован с действительным указателем char* и значением длины до того, как попытается выполнитьпреобразование в std::string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...