問題タブ [name-lookup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
7727 参照

c++ - GCC の問題: テンプレート引数に依存する基本クラスのメンバーを使用する

次のコードは gcc ではコンパイルされませんが、Visual Studio ではコンパイルされます。

エラーが発生します:

test.cpp: メンバー関数 'void B::bar()':

test.cpp:11: エラー: 'foo' はこのスコープで宣言されていません

しかし、そうあるべきです!私がに変更barした場合

その後、コンパイルされますが、これを行う必要はないと思います。GCCがここに従っているC ++の公式仕様に何かありますか、それとも単なる癖ですか?

0 投票する
3 に答える
52584 参照

c++ - 基本クラスのメンバー データへの派生テンプレート クラス アクセス

この質問は、このスレッドで尋ねられた質問を助長するものです。

次のクラス定義を使用します。

テンプレート クラスの基本クラスのメンバーにアクセスするときは、Bar<T>::_foo_arg. これを回避する方法はありますか?テンプレートクラスメソッドで「using」ステートメント/ディレクティブを使用して、コードを簡素化できますか?

編集:

スコープの問題は、変数を this-> 構文で修飾することによって解決されます。

0 投票する
7 に答える
31712 参照

c++ - 'template' のベース クラスから派生クラスに 'typedef' を伝播しています

typedef のみを含む基本クラスを定義しようとしています。

BI で Vec_t が認識されず、明示的に記述する必要があるというエラーが表示されるのはなぜですか?

0 投票する
4 に答える
5108 参照

c++ - ADLが関数テンプレートを見つけられないのはなぜですか?

C ++仕様のどの部分が、引数に依存するルックアップが、関連付けられた名前空間のセットで関数テンプレートを見つけることを制限していますか?言い換えると、main以下の最後の呼び出しがコンパイルに失敗するのはなぜですか?

0 投票する
3 に答える
1227 参照

c++ - 誤ったプライベート基本クラスにアクセスできませんか?

g++ 4.2.1 を使用してこのコードをコンパイルします。

私は得る:

ただし、wrap_rep使用するクラスを変更するとST:

それはうまくコンパイルされます。または、元のコードを次のように変更すると:

また、正常にコンパイルされます。私には、元のコードはそのままで問題ないようです。これは g++ のバグですか? そうでない場合、なぜテンプレートの使用が機能するのでしょうか? そして、他のケースでは、なぜ::S必要なのですか?

0 投票する
2 に答える
4716 参照

c++ - 多重継承テンプレート クラス

私の最初の考えは、クラス A には messageA と messageB オブジェクトを受け入れる 2 つのオーバーロードされた送信関数が含まれているため、上記のコードは問題ないはずです。

ただし、コンパイラは次のエラーを表示します。

あいまいな理由がわかりますか?最初のサブミット呼び出しで、messageA バージョンを呼び出したいのは明らかではありませんか? 2 回目の送信呼び出しでは、messageB バージョンを呼び出したいですか?


0 投票する
2 に答える
917 参照

c++ - 名前検索の説明

$10.2/4- "[ 注: たとえば、精巧な型指定子 (3.4.4) または基本指定子 (第 10 節) で名前を検索すると、すべての非型宣言が無視され、入れ子になった型指定子で名前が検索されます。 name-specifier (3.4.3) は、関数、変数、および列挙子の宣言を無視します。"

名前の検索について説明しているときに、このセクションでこのステートメントが非常に紛らわしいことがわかりました。

私の質問:

  1. ルールに対する私の理解は正しいですか?

  2. 最後の行では、グローバル名前空間の関数を意味するのに対し、行では、::S新しい処理を自動的に struct を意味するのはなぜですか。S::SS

  3. これはドキュメントのあいまいさを示しているのでしょうか、それとも C++ 標準ドキュメントから離れる日がまた来るのでしょうか?

0 投票する
2 に答える
1343 参照

c++ - 名前ルックアップの過負荷解決/あいまいさ(どれか)

$ 7.3.3 / 14(C ++ 03)

'f'のコードのコメントは、'B::x'と'C::x'の間のあいまいさが予想されることを示しています。

ただし、g ++(ideone)またはComeauを使用してコンパイルすると、エラーはわずかに異なります。B::xまたはC::xのあいまいさを示す代わりに、これらのエラーは、AがDのあいまいなベースであるという事実を示します。

prog.cpp:関数内'int f(D *)':prog.cpp:16:エラー:'A'は'D'のあいまいなベースです</p>

"ComeauTest.c"、21行目:エラー:基本クラス"A"はあいまいですreturnd-> x(); //あいまい:B::xまたはC::x

$ 10.2の名前検索ルールを見ると、コードスニペットのコメントが実際には正しくないように感じます。エラーは、実際、何よりもまず、基本クラス「A」のあいまいさに関連しています(たとえば、過負荷解決のあいまいさ)。何かご意見は?

0 投票する
4 に答える
2710 参照

c++ - 非const仮想メソッドをオーバーライドすると、constオーバーロードが非表示になりますか?

検討:

(私はGCCを使用しています。)

したがって、f()のconstバージョンはCに隠されているようです。これは私には非常に理にかなっていますが、標準で義務付けられていますか?

0 投票する
2 に答える
5267 参照

c++ - C++での距離計算エラー

私は次のコードを持っていますが、ここにエラーのリストがあります