[解決済み】拡張イニシャライザーリストは、以下の場合のみ利用可能です。
2022-02-01 04:58:40
質問内容
私はC++の初心者です。私は自分のエラーを読むのに苦労しています。
以下はプログラムです。
#include <string>
#include <iostream>
using namespace std;
int main(){
int *bN = new int[9];
string bankNum;
int *number = new int[9];
int total, remain;
int *multi = new int{7,3,9,7,3,9,7,3};
cout<<"Please enter the bank number located at the bottom of the check"<<endl;
cin>>bankNum;
for(int i = 0; i < 8; i++){
bN[i]= (bankNum[i]-48);
}
for(int i = 0; i < 8;i++){
cout<<bN[i];
}
cout<<endl;
for(int i = 0; i < 8;i++){
cout<<multi[i];
}
cout<<endl;
for(int i = 0; i < 8;i++){
bN[i] = bN[i] * multi[i];
cout<< bN[i];
}
cout<<endl;
for(int i = 0; i < 8;i++){
total += bN[i]
cout<<total;
}
cout<<endl;
remain = total % 10;
if(remain == (bankNum[9] - 48)){
cout<<"The Number is valad"<<endl;
cout<<remain<<endl;
}
}
とエラー
wm018@cs:~$ c++ bankNum.cpp
bankNum.cpp: In function âint main()â:
bankNum.cpp:9:19: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
bankNum.cpp:9:38: error: cannot convert â<brace-enclosed initializer list>â to âintâ in initialization
bankNum.cpp:30:3: error: expected â;â before âcoutâ
解決方法は?
中括弧を使ったこのスタイルの初期化。
int *multi = new int{7,3,9,7,3,9,7,3};
は2011年に導入された言語です。古いコンパイラはこれをサポートしていません。新しいコンパイラの中には、あなたがコンパイラに指示した場合のみサポートするものがあります。
c++ -std=c++0x bankNum.cpp
しかし、このような初期化は
new
. これは小さく、ローカルにしか使われないので、ローカル配列を宣言することができます。これは、C++11のサポートは必要ありません。
int multi[] = {7,3,9,7,3,9,7,3};
これは、メモリリークを修正する利点もあります。
new
でメモリを確保したら、そのメモリを
delete
を使用し終わったら
ダイナミックアロケーションが必要な場合は
std::vector
が、メモリの確保と解放を代行してくれます。
std::vector<int> multi {7,3,9,7,3,9,7,3};
あなたの使っているGCCのバージョンはかなり古く、C++11のサポートが不完全であることに注意してください。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] オブジェクトをメンバーとして、プレーンなJavaScriptオブジェクトをループさせる方法
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 配列のベクトルを扱う正しい方法