无法从char ***转换为char **

时间:2013-08-29 03:56:55

标签: c++ arrays char

我正在尝试创建一个char **,其中包含我从文件中读取的一些字符串,但是当我尝试创建它时,我收到一条错误消息:

error C2440: 'initializing' : cannot convert from 'char ***' to 'char **'

`

Portion of code with the error:

//limit defined above this
char** re = new (char**)[limit]; <---------- Error
for(int x = 0; x<limit;x++) {
    re[x]=(char*)stringsfromfile[x].c_str();
}

我现在只是在短时间内编写c ++而且我无法理解为什么我会收到此错误。在互联网上搜索了几个小时的答案,仍然找不到任何东西。如果我不清楚我道歉,请告诉我我一直不清楚的事情。

谢谢!

2 个答案:

答案 0 :(得分:3)

您正在尝试创建一个char指针数组,这意味着您应该使用:

char** re = new (char*)[limit];

但是,您可能需要考虑使用C ++的一些非C方面,例如向量 - 您会发现您的工作效率会大大提高。

答案 1 :(得分:0)

左手操作与右手操作不匹配。

  • 左手:char双指针
    右手:char双指针 一个数组(产生第三个指针)。

因此,如果您想使用数组,您可以使用如下所示的示例:

char **re = (char *[]){ "New Game", "Continue Game", "Exit" };

但是,选择只能用于线性寻址。例如:

printf ("%s", &(*re)[0]); outputs: New Game
printf ("%s", &(*re)[1]); outputs: ew Game
printf ("%s", &(*re)[9]); outputs: Continue Game