C++ 为什么显示--”;无法传递非平凡可复制类型的对象";?

C++ 为什么显示--”;无法传递非平凡可复制类型的对象";?,c++,linux,os.execl,C++,Linux,Os.execl,您不必从一开始就阅读完整的代码。问题出在main中的execl(..)语句中。代码是-- #包括 #包括 #包括 #包括 #包括 #包括 #定义李龙int 使用名称空间std; char-TypedCommandInTerminal[1001]; 向量有效命令,类型命令; void ShowTerminal() { cout您正在将std::string对象作为可选参数传递给函数(execl接受可变数量的参数)。std::string具有非平凡的构造函数、析构函数等,不能以这种方式使用。在这种情

您不必从一开始就阅读完整的代码。问题出在main中的execl(..)语句中。代码是--

#包括
#包括
#包括
#包括
#包括
#包括
#定义李龙int
使用名称空间std;
char-TypedCommandInTerminal[1001];
向量有效命令,类型命令;
void ShowTerminal()
{

cout您正在将
std::string
对象作为可选参数传递给函数(
execl
接受可变数量的参数)。
std::string
具有非平凡的构造函数、析构函数等,不能以这种方式使用。在这种情况下,您希望传递指向字符串的指针,因此请更改

execl("/bin/mkdir","mkdir",TypedCommand[1],NULL);


execl
不使用也不能使用
string
对象。它使用指向
char
的原始指针。至于如何更改以使其工作,请参阅。@hvd这不是的副本。这个问题仅仅是关于如何将
std::string
转换为
const char*
这个问题是关于传递非triv的ial反对采用可变参数的函数。虽然解决方案是相同的,但它们是两个完全不同的问题。我确信这是一个重复的问题,但事实并非如此。@CaptainObvlious在过去,对于当另一个问题是sa时,是否应以重复形式结束,存在很多分歧我,或者当另一个问题的答案也回答了这个问题时。我关闭它是因为这个问题的答案也回答了这个问题,但是现在你提出了这个问题,我已经在Meta上寻找了相关的问题,同意你的观点,并且重新打开了这个问题。
execl("/bin/mkdir","mkdir",TypedCommand[1],NULL);
execl("/bin/mkdir","mkdir",TypedCommand[1].c_str(),NULL);