私はcppを学習中です。私は今日、Macのコマンドラインでg++を介してコンパイルする通常のモードでプログラムを作成しました。XCodeでの作業も再確認しましたが、IDEでコードがコンパイルされない原因となっているコード行が見つかりました
行は次のとおりです。
string result[2] = subject[rand() % nsubject];
ここで、subjectは文字列の多次元配列であり、その各メンバーは2つの文字列の配列であり、nsubjectは配列の長さを保持するintです。Xcodeは次のように言っています:配列初期化子は初期化子リストでなければなりませんが、前に述べたように、g++は文句なしにコンパイルします。ですから、この言語に慣れていないので、このステートメントはおそらく貧弱な形式だと思います。XCodeが許容できると判断する方法が必要ですよね?
これは問題を示す可能性のあるフラグメントであり、コンテキストから削除してもあまり意味がありませんが、以下は私の端末で正常にコンパイルされますが、xcodeでビルドできません:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
int main(){
string subject[][2] = {
{"a", "b"},
{"c", "d"},
{"e", "f"},
{"g", "h"},
{"i", "j"}
};
int nsubject = sizeof subject / sizeof subject[0];
srand(static_cast<unsigned>(time(0)));
string result[2] = subject[rand() % nsubject];
cout << result[0] << endl; //should return 'a','c','e','g' or 'i'
return EXIT_SUCCESS;
}