小编Mal*_*ush的帖子

从“const char**”到“char* const*”的无效转换

我正在做一个学校作业,我必须调用execvp,其方法签名如下

execvp(const char* file, char* const argv[])
Run Code Online (Sandbox Code Playgroud)

但是我的数据是这样的:

std::vector<std::string*>
Run Code Online (Sandbox Code Playgroud)

我一直在尝试将所述向量转换为 的第二种格式的正确格式execvp(),但不可避免地会出现以下错误:

command.cc:120:29: error: invalid conversion from ‘const char**’ to ‘char* const*’ [-fpermissive]
     execvp(args[0], argv);
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的变体,但它们都会导致此错误。这个错误让我很困惑,因为我不知道const*. 你怎么能有const*?我会考虑将 更改std::vector为其他类型,但这是一项任务,我实际上不允许更改它。下面是我用来尝试char*[]从向量创建一个的代码:

    const size_t numArgs = _simpleCommands[i]->_arguments.size();
    std::vector<const char*> args;
    for(size_t j = 0; j < numArgs; ++j)
    {
        args.push_back(strPtrToCharPtr(_simpleCommands[i]->_arguments[i]));
    }
    const char** argv = new const char*[numArgs];
    for(size_t j = 0; j < numArgs; ++j)
    {
        argv[j] = args[j];
    }
    execvp(args[0], argv);
Run Code Online (Sandbox Code Playgroud)

c++ c++11

7
推荐指数
1
解决办法
4748
查看次数

标签 统计

c++ ×1

c++11 ×1