問題タブ [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 のバグですか?

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

c++ - ライブラリでの名前空間の使用

ライブラリ内の完全修飾名が必要かどうかを知りたいです。

例 (ここでは、読みやすくするために名前空間をインデントしています):

C++ 標準の 3.4 の章を完全には理解していませんでした。また、STL ベクトル ヘッダーで説明できないものを見ました (読みやすいように簡略化しています)。

問題は、_STD が ::std:: に展開されることです。しかし、名前の検索に関する私の理解によれば、reverse_iterator は最初にベクトルで検索され、次に std である親名前空間で検索されます。どのように衝突が可能でしょうか?

副次的な質問: 引数を持つテンプレート関数の名前の名前検索規則は何ですか? 修飾された ID は、ADL なしで既に宣言されている名前を直接検索すると思いますが、修飾されていない名前は ADL を実行します。

ご回答ありがとうございます。

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

android - 着信中の電話検索

True Caller に似たアプリケーションを構築しようとしています。着信コールが来ると、クライアントの(電話の)連絡先で利用できない場合にのみ、アプリケーションはサーバーに接続して着信番号の連絡先名を取得する必要があります。

連絡先を検索するための電話ルックアップと、着信がいつ来るかを確認するためのブロードキャストレシーバーを認識しています。

電話がかかってきたときに連絡先を検索するために、アプリケーションで電話検索を実行する必要があるかどうかを知りたいです。または、電話がかかってきたときにAndroidがデフォルトで連絡先名を検索するときに、同じ情報を取得できますか. はいの場合、その方法を教えてください。そうでない場合、私のアプリケーションは電話検索を実行します。私のアプリケーションが電話ルックアップを実行する場合、アンドロイドがとにかく連絡先の名前を探すので冗長になると思います。

どうもありがとう

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

c++ - オーバーロードされた operator== を使用した find()

オーバーロードされた operator==() を使用してベクター内の要素を見つけようとしています。ただし、type1次のコードで使用すると、出力は 1 と 0 (見つかりません) になります。Usingtype2は 1 と 1 の両方を返します。環境は Xubuntu 12.04 と g++ バージョン 4.6.3 です。

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

c++ - テンプレートで引数依存の名前検索を実行すると奇妙な動作が発生する

最近私は、よく知られているテンプレート クラスの名前の「2 フェーズの名前検索」の正確な意味を研究していました。これについてはたくさんの記事を読みましたが、まだすべてを知ることはできません。今、私は以下に示すコードについて混乱していました:

2番目のコメントに注意してください。"f" は従属名であるため、その検索は "main" 関数でインスタンス化されるまで遅らせる必要があります。その時点で、コンパイラはメイン関数のスコープで引数に依存する名前のルックアップを実行する必要があります。名前空間 ns で関数を検出する必要があると思いますが、それでもコンパイル エラーが発生します。

誰かが私にこれを説明できますか?ありがとう。

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

c++ - フレンド クラス宣言と using ディレクティブ

次の例は整形式ですか?

この例は、Clang 3.5 では正常にコンパイルされましたが、g++ 4.8.1 では次のように失敗しました。

C++11 標準 §7.3.1.2 p3 によると、

宣言内の名前がfriend修飾されておらず、テンプレート IDでもなく、宣言が関数または精巧な型指定子である場合、エンティティが以前に宣言されているかどうかを判断するためのルックアップでは、最も内側にある名前空間の外側のスコープは考慮されません。

たとえば、最も内側にある名前空間(つまり、グローバル名前空間)class Aのメンバーではありませんが、ディレクティブを使用してグローバル名前空間に導入されます。class A