cpp: error: 'class boost::optional<std::__cxx11::basic_string<char> >' has no member named 'c_str'

cpp: error: 'class boost::optional<std::__cxx11::basic_string<char> >' has no member named 'c_str'

我是 c++ 的新手,正在尝试解决我的函数中的问题 -

Test::Test(const boost::optional<std::string>& 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());
                    ^

请帮助修复我的代码

mName 成员属于 optional 类型。如果你想要optional后面的字符串,你需要用类似的东西取消引用它:

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

当然,您可能希望首先确保它具有一个值:

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