問題タブ [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 投票する
1 に答える
518 参照

c++ - 演算子オーバーロードの clang++ と g++ の異なる出力

このサンプル プログラムでは、g++ と clang で異なる動作が見られます

フー.h:

Foo.cpp

main.cpp

clang++ と g++ でコンパイルすると、異なる結果が生成されます。

どれが正しいですか、なぜですか?.

0 投票する
1 に答える
83 参照

c++ - 多重継承では仮想メソッドの動作が異なります

なぜこれが機能するのか

これは、訪問メソッドを呼び出すときのあいまいさについて不平を言います

これも同じ問題を示しています。

どういうわけか、複数の継承が仮想関数の署名を混乱させているように見えます...

gcc バージョン 4.8.0 20130411 (プレリリース) を使用

0 投票する
1 に答える
94 参照

c++ - 後で定義されるオーバーロードされた関数の名前検索

後で定義される関数に依存している場合、関数ルックアップに関する奇妙な動作に気付きました。

出力:

何らかの理由で、その下のオーバーロードを見つけるためにfooinsideを使用することを期待していました。barのオーバーロードfooを上に移動barすると、出力が望ましいものになりますint:0(または宣言を書くだけです)。

この同じ動作は、二項演算子のオーバーロードには適用されないようです。

出力:

2 つの質問があります。1 つ目は、なぜこのような動作になるのか、また演算子のオーバーロードではなぜ異なるのかということです。2 つ目: 名前付き関数がある場合 ( の使用のように)、後で翻訳単位で宣言されたオーバーロードされた s を検出するような方法でfoo関数を作成する方法はありますか?barfoo

0 投票する
0 に答える
346 参照

c++ - ダイヤモンド継承内のテンプレート親基本クラスの保護されたメンバー変数にアクセスする方法

大規模なプロジェクトに、次のコードのより複雑なバージョンがあります。

上記のコードをコンパイルしようとすると、次のエラーが発生します。

この場合、GChild1 内にその名前の変数がいくつかあることを理解しています: Base::var から Child1 まで、Base::var から Child2 まで、Base::var から GChild1 まで。また、より具体的にスコープ演算子を使用することで、この問題を解決できることも理解しています。ただし、GChild1 の定義に「using」行を追加してもこの問題が解決されない理由がわかりません。例えば

これにより、同じエラーが発生します。似たような質問がされたのを見たことがありますが、新しい質問をするのに十分なほど異なっているか、回答が私のニーズに合わないと感じました。この問題を解決し、解決策を理解するためのガイダンスに感謝します。

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

c++ - 引数の型が異なるオーバーロードがある場合、グローバル名前空間から関数が見つかりません

グローバル名前空間に関数があり、別の名前空間に引数の型が異なるオーバーロードがある場合、C++Builder コンパイラはグローバル名前空間から関数を見つけられないようです。

C++Builder で次のエラーが発生します。

Visual C++ 2012 はこれをエラーなしでコンパイルします。

同じ名前で引数の型が異なる関数が存在する場合でも、グローバル名前空間の関数が見つかるはずであることがわかりました。

何か見落としがありますか、それとも C++Builder のバグですか?