0

ファイルから読み取った文字列を含む 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++ を書いてまだ少ししか経っていませんが、なぜこのエラーが発生するのか理解できません。インターネットで数時間答えを探しましたが、まだ何も見つかりません。不明な点がありましたら申し訳ありませんが、不明な点を教えてください。

ありがとう!

4

2 に答える 2

0

左手操作と右手操作のミスマッチがあります。

  • 左手: char double ポインター
    右手: 配列の char double ポインター (結果として 3 番目のポインター)。

したがって、配列を使用する場合は、以下の例のように使用できます。

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
于 2013-08-29T04:08:16.990 に答える