回答編集履歴

2

ちょっと文言修正

2019/12/07 02:55

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
 
64
64
 
65
- epistemeさんの回答にあるような変数が重複していると言う話はこのメッセージには書いてありません。そのため、このメッセージを深く分析する必要があります。C++では`a[b]`という表現は`*(a+b)`と同じです。間接演算子`*`がありますので`a+b`は何からのポインタである必要があり、そのためには`a`と`b`はポインタ型と整数型の組合せで無ければなりません。メッセージは「`PAD_RIGHT`がポインター型でなければならないが整数型です」という意味です。ここから、`Pad`が整数型判断されていると推測できます。しかし、元々書こうとしたコードでは`Pad`はグローバルで配列として書いたはずなのでポインター型のはずです(配列はポインター型に暗黙に変換できる)。どこかで`Pad`を整数型としているところがあると推測されます。そうやって探していくとepistemeさんの解答にもあった`int Pad = 0;`に辿り着くと言うことです。
65
+ epistemeさんの回答にあるような変数が重複していると言う話はこのメッセージには書いてありません。そのため、このメッセージを深く分析する必要があります。C++では`a[b]`という表現は`*(a+b)`と同じです。間接演算子`*`がありますので`a+b`は何からのポインタである必要があり、そのためには`a`と`b`はポインタ型と整数型の組合せで無ければなりません。メッセージは「`PAD_RIGHT`がポインター型でなければならないが整数型です」という意味です。ここから、`Pad`が整数型だと判断されていると推測できます。しかし、元々書こうとしたコードでは`Pad`はグローバルで配列として書いたはずなのでポインター型のはずです(配列はポインター型に暗黙に変換できる)。どこかで`Pad`を整数型としているところがあると推測されます。そうやって探していくとepistemeさんの解答にもあった`int Pad = 0;`に辿り着くと言うことです。
66
66
 
67
67
 
68
68
 

1

誤字とか

2019/12/07 02:55

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -50,11 +50,11 @@
50
50
 
51
51
 
52
52
 
53
- Visual Stuidoのエディタでは、ソースコードに問題がある場合、どこに問題があるか一目でわかるように、問題部分に赤い下線を引くようになっています。下線部分の詳細はエラー一覧のエラーで確認できます。この機能は、IntelliSenseによって構文としてあり得ない、型や引数の不一致等の問題を検出したときにあらわれます。ほとんどの場合によって、IntellSenseで見つかった問題はコンパイル時にもエラーになりますが、エラーメッセージや内容は異なる場合があります。しし、IntelliSenseは実際にコンパイルして確認しているわけでは無いため、問題ないという場所でもコンパイル時にエラーが起きる場合があります。他にも、IntelliSenseの設定とコンパイルの設定が不一致(C++のバージョン等)ですと、IntelliSenseではエラー扱いでも、コンパイルは問題なくできると言うこともあります。
53
+ Visual Stuidoのエディタでは、ソースコードに問題がある場合、どこに問題があるか一目でわかるように、問題部分に赤い下線を引くようになっています。下線部分の詳細はエラー一覧のエラーで確認できます。この機能は、IntelliSenseによって構文としてあり得ない、型や引数の不一致等の問題を検出したときにあらわれます。ほとんどの場合、IntellSenseで見つかった問題はコンパイル時にもエラーになりますが、エラーメッセージや内容は異なる場合があります。しし、IntelliSenseは実際にコンパイルして確認しているわけでは無いため、問題ないという場所でもコンパイル時にエラーが起きる場合があります。他にも、IntelliSenseの設定とコンパイルの設定が不一致(C++のバージョンが違う等)ですと、IntelliSenseではエラー扱いでも、コンパイルは問題なくできると言うこともあります。
54
54
 
55
55
 
56
56
 
57
- 問題と判された理由はマウスカーソルを合わせると説明が表示されます。また「エラー一覧」にも書かれています。なお、問題の説明は直接的な対応方法が書いていることは少なく、大抵は期待する何かに対して別の何かになっているという表現です。その場合は、期待する何かになっていない理由を論理的に推測していく必要があります。例えば今回の場合、下記のようになっています。
57
+ 問題と判された理由はマウスカーソルを合わせると説明が表示されます。また「エラー一覧」にも書かれています。なお、問題の説明は直接的な対応方法が書いていることは少なく、大抵は期待する何かに対して別の何かになっているという表現です。その場合は、期待する何かになっていない理由を論理的に推測していく必要があります。例えば今回の場合、下記のようになっています。
58
58
 
59
59
 
60
60
 
@@ -62,7 +62,7 @@
62
62
 
63
63
 
64
64
 
65
- epistemeさんの回答にあるような変数が重複していると言う話はありません。C++では`a[b]`という表現は`*(a+b)`と同じです。`a+b`は何からのポインタである必要があり、そのためには`a`と`b`はポインタ型と整数型の組合せで無ければなりません。メッセージは「`PAD_RIGHT`がポインター型でなければならないが整数型です」という意味です。ここから、`Pad`が整数型の判断されていると推測できます。しかし、元々書こうとしたコードでは`Pad`はグローバルで配列として書いたはずなのでポインター型のはずです(配列はポインター型に暗黙に変換できる)。どこかで`Pad`を整数型としているところがあると推測されます。そうやって探していくとepistemeさんの解答にもあった`int Pad = 0;`に辿り着くと言うことです。
65
+ epistemeさんの回答にあるような変数が重複していると言う話はこのメッセージには書いてありません。そのため、このメッセージを深く分析する必要があります。C++では`a[b]`という表現は`*(a+b)`と同じです。間接演算子`*`がありますので`a+b`は何からのポインタである必要があり、そのためには`a`と`b`はポインタ型と整数型の組合せで無ければなりません。メッセージは「`PAD_RIGHT`がポインター型でなければならないが整数型です」という意味です。ここから、`Pad`が整数型の判断されていると推測できます。しかし、元々書こうとしたコードでは`Pad`はグローバルで配列として書いたはずなのでポインター型のはずです(配列はポインター型に暗黙に変換できる)。どこかで`Pad`を整数型としているところがあると推測されます。そうやって探していくとepistemeさんの解答にもあった`int Pad = 0;`に辿り着くと言うことです。
66
66
 
67
67
 
68
68