問題タブ [scope-resolution]
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.
c++ - isalnum のスコープ解決演算子
この質問のフォローアップとしてこれを尋ねています。前の質問はほぼ3年前に尋ねられたので、新しい質問をする方が良いと思います.
私がリンクしたその質問の核心は、OPが次のコード行を実行しようとしたことです:
いくつかのコンテナs
で。コード行のコンパイルに失敗しました。OP はこれを実行する必要がありました
locale
受け入れられた回答は、 ライブラリとライブラリに isalnum 関数がありcctype
、コンパイラが 2 つの間のあいまいさを解消するのに問題があるため、::
スコープ解決演算子であると述べています。これらのライブラリの 1 つだけを含めてテストしましたが、コンパイラにはまだあいまいさを解消する問題があります。何故ですか?これらのライブラリの 1 つだけを含めた場合、明らかにコンパイラは他のライブラリについて「認識」してはならないので、なぜ競合するのでしょうか?
私の質問の 2 番目の部分は、オペレーターが必要な機能をどのように::
教えてくれるのかということです。isalnum
ありがとう
編集
::
演算子が、必要な関数/変数がグローバル スコープにあることを教えてくれることは知っていますが、それでも私の 2 番目の質問には答えていません。
c++ - クラスメンバーと同名の関数を呼び出す方法
同じ名前のメンバー関数を定義するクラスから非メンバー関数listen()
(から含まれる) を呼び出すにはどうすればよいですか?sys/socket.h
listen()
c++ - Pimpl、private クラス前方宣言、スコープ解決演算子
Pimpl イディオムを使用する次の 2 つのクラスを考えてみましょう。
ClassA: Pimpl クラスの前方宣言と変数宣言を別の行で行う
ClassA.h:
ClassA.cpp:
ClassB: Pimpl クラスの前方宣言と変数宣言を 1 行で
ClassB.h:
ClassB.cpp:
質問:
ClassB.h の 1 行で前方宣言と変数宣言を組み合わせると、ClassB.cpp
ClassB_Impl
のプライベート クラスの実装で「スコープを解除」する必要があるのはなぜですか?つまり、ClassA.cpp では、プライベート クラス メソッドの定義は
ただし、ClassB.cpp では、プライベート クラス メソッドの定義は
/li>各方法の意味は何ですか?どちらの方がよいですか?
(Galikの回答に対するフォローアップの質問)
クラスの前方宣言とそのクラスの変数の宣言を1つのステートメントで組み合わせると...
...これは何と呼ばれていますか?この種の組み合わせステートメントの名前はありますか? そして、なぜそのようなステートメントの結果として の
ClassB_Impl
内部クラスにならないのでしょうか?ClassB
これと比較して...
...その場合、 の内部クラスになり
ClassA_Impl
ますClassA
。ワンライナーが
ClassB_Impl
グローバル名前空間に配置され、ツーライナーがの名前空間に配置ClassA_Impl
されるのはなぜですか?ClassA
なぜ違うのですか?
c++ - スコープ解決演算子を適用すると、コンパイラがチョークする
SDL の RenderCopy 関数を使用しています。
最後の 2 つの引数は、画像をコピーするコピー元とコピー先の四角形です。四角形へのポインタが必要です。上記のコードは期待どおりに機能し、再び "SDL_Rect Game::mSourceRect" として型付けされます。 、メンバー変数に期待されるように。
この関数とこの関数のみに渡されるときに、四角形にスコープ解決演算子を適用しようとすると、常に問題が発生します。
エラーは次のとおりです。
&Game::mSourceRect の型を確認すると、スコープ解決演算子を使用しない場合とまったく同じであることがわかります。私の質問は、なぜコードがコンパイルされないのかということです。
エラーリストには、「SDL_Rect Game::* is not compatible with parameter of type "const SDL_Rect *"」と表示されています。
これらの 2 つの引数でスコープ解決演算子を使用することはできませんが、私は仕事で 1 日中 C# を書いており、名前空間によって常に明示的にアクセスしているため、習慣的に使用しています。私はそれを頻繁に行っています(さらに、このようなものを明示的にスコープすることは、そもそも悪いことではないので、そのまま使い続けたいと思います)。
c++ - C++ - 「using」キーワードまたはスコープ解決演算子で名前空間名を使用
C++ のさまざまなプログラムは、次のようにスコープ解決演算子を使用せずに作成されます。
また、「using」キーワードの使用も見ました。
効率的な理由からどちらが優れていますか?