错误:无法在赋值时将'std :: string'转换为'char'

Mic*_*mer -4 c++ string char

我有一个名为shell脚本的可执行文件:

./lineGraph argv[1] argv[2] ... argv[9]
Run Code Online (Sandbox Code Playgroud)

它创建了类lineGraph的一个实例(这里代码非常简化):

class lineGraph
{
  string z[3];

  lineGraph(string lumi, string label, char *typeArg, string volume, string axisStyle, string theLine, string z1, string z2, string z3)
  {
    this->z[0]=z1;
    this->z[1]=z2;
    this->z[2]=z3;
  }
}

public int main(int argc, char* argv[])
{
  lineGraph *graphData = new lineGraph(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
};
Run Code Online (Sandbox Code Playgroud)

我得到:

lineGraph.cc:251: error: cannot convert ‘std::string’ to ‘char’ in assignment
lineGraph.cc:252: error: cannot convert ‘std::string’ to ‘char’ in assignment
lineGraph.cc:253: error: cannot convert ‘std::string’ to ‘char’ in assignment
Run Code Online (Sandbox Code Playgroud)

这里:

this->z[0]=z1;
this->z[1]=z2;
this->z[2]=z3;
Run Code Online (Sandbox Code Playgroud)

我很好奇一个解决方案,也解释了为什么它给了我一个错误(我将一个字符串[]的元素设置为一个字符串,我认为这是允许的.因为我的C++生锈了,所以我可能缺少一些基本的东西.

提前致谢!

编辑:问题已解决.是一个偷偷摸摸的变量声明覆盖了z []声明.

nul*_*ptr 5

代码中有几个错误:

  1. ;课堂申报后遗漏.
  2. argv没有宣布,你应该写int main(int argc, char *argv[]).
  3. 该类的构造函数是私有的(应该是公共的).

但在纠正这些错误后,代码编译得很好.没有任何cannot convert std::string to char错误.

可能你正在尝试编译不同的东西,而不是你向我们展示的代码.