cpp: ошибка: ‘повышение класса ::необязательно<std::__cxx11::basic_string >’ не имеет члена с именем ‘c_str’

#c #boost

#c #повышение

Вопрос:

Я новичок в c и пытаюсь исправить проблему в моей функции —

 Test::Test(const boost::optional<std::string>amp; name):
    mName(name)
{
        ...
        Some statements
        ...
}

int Test::setResult()
{
     ...
     i=system(mName.c_str())
     ...
}
 

Ошибка, которую я получаю, такова

 error: 'class boost::optional<std::__cxx11::basic_string<char> >' has no member named 'c_str'
     i=system(mName.c_str());
                    ^
 

Пожалуйста, помогите исправить мой код

Ответ №1:

mName Элемент имеет optional тип. Если вам нужна строка, стоящая за этим optional , вам нужно разыменовать ее с помощью чего-то вроде:

 i = system(mName->c_str());
 

Конечно, вы, вероятно, захотите сначала убедиться, что у него есть значение:

 if (mName) i = system(mName->c_str());