問題タブ [friend]
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++ - 名前空間内のクラス テンプレートの出力演算子のオーバーロード
私はこのプログラムを持っています
コンパイラが skg::Triplet の出力演算子を見つけられなかったため、コンパイルが失敗しました。ただし、出力演算子は存在します。
トリプレットを skg 名前空間からグローバル名前空間に移動すると、すべて正常に動作します。ここで何が悪いのですか?
c++ - 重要なテンプレートとフレンド宣言を含む C++ 構文の質問
次のコードは一目瞭然です。使用されている構文 (使用する必要がある構文) に関して 2 つの質問があります。これらの提示された質問に対する回答を提供していただければ、私は永遠に感謝します。
実際、これが唯一の正しい構文であることを確認しました (間違っていることがわかってうれしいです)。私の質問は、質問の本文で説明されているように、構文の背後にある理由に関するものです。
助けてくれてありがとう。
c++ - 別の C++ 名前空間内のグローバル名前空間でフレンドを定義するにはどうすればよいですか?
グローバル名前空間で二項演算子を定義したいと思います。オペレーターは、別の名前空間で定義されているクラスで動作し、オペレーターはそのクラスのプライベート メンバーにアクセスする必要があります。私が抱えている問題は、クラス定義でグローバル演算子をフレンドにするときに、そのグローバル演算子をスコープする方法がわからないことです。
私は次のようなものを試しました:
コンパイラ (g++ 4.4) は、それをどう処理するかを知りませんでした。ラインのようです
(疑似コード)のようなものとして評価されます
それ以外の
演算子の宣言で :: を省略した場合、コンパイルは機能しますが、演算子は名前空間 NAME にあり、グローバル名前空間にはありません。
このような状況でグローバル名前空間を修飾するにはどうすればよいですか?
c++ - 別の名前空間のグローバル名前空間からフレンドクラスを定義するにはどうすればよいですか?
以前のQ&A(別のC ++名前空間内のグローバル名前空間でフレンドを定義するにはどうすればよいですか? )では、グローバル名前空間内の関数を参照するネームスペース内でフレンド関数定義を作成するためのソリューションが提供されました。
クラスについても同じ質問があります。
CBaseSDを名前空間に入れると、機能します。例:フレンドクラスSD :: CBaseSD; しかし、グローバル名前空間で機能する呪文は見つかりませんでした。
私はg++4.1.2でコンパイルしています。
ruby-on-rails - Rails ソーシャル ネットワーキング フレンドシップのための最良のリソース
Rails ソーシャル ネットワーキング サイトに「友情」システムを追加するための最良のリソースは何だと思いますか? 私が見つけた主な3つ:
自己参照関連- Railscast
act_as_network
has_many_friends
ただし、Railscast のものは少し単純化する傾向があり、他の 2 つの実装に関するドキュメントが不足していることがわかります。私のソーシャルネットワークのこの側面の開発に役立つ可能性のある他のプラグインやチュートリアルを誰かが推奨できますか?
ありがとう!
c++ - C++: VS2005 の (テンプレート) クラスで演算子配置 new がインライン フレンド関数として認識されないのはなぜですか?
私は Visual Studio 6.0 プロジェクトを継承して 2005 に変換しました。この素晴らしい MyClass クラスが含まれており、クライアント コードはそのインスタンスでplacement new を呼び出してどこでも使用します (ここでは大幅に簡略化しています)。
VS2005 で "testfunction()" を実行すると、配置 new 呼び出しで、MyClass の演算子 "inline friend void* operator new(...)" が呼び出されません。代わりに、"operator unsigned int*()" が呼び出され、結果が void* にキャストされ、代わりにデフォルトの配置演算子 new が呼び出されます (したがって、"Converting for default placement new" が表示されます)。
VS6 では、プレースメント new は代わりに MyClass で「インライン フレンド void* 演算子 new(...)」を呼び出します (したがって、「CMyClass フレンド プレースメント new」が表示されます)。これは作成者が意図したものですが、VS6 はインライン フレンドを奇妙な方法。
VS2005 が引数依存ルックアップを使用してインライン フレンド配置演算子 new を認識しないのはなぜですか? 引数を使用して hello() 関数を認識します (そのため、「koenig ルックアップで呼び出された Hello」が表示されます) が、新しい配置では機能しません。
参考までに、これは MyClass がテンプレート化されているかどうかに関係なく発生するようです (ただし、完全を期すためにテンプレート化したままにしています)。また、MyClass の外で非フレンドの「operator new」のコメントを外すと、VS2005 で適切に呼び出されます。
何を与える?そこにエラーはありますか?配置 new は、引数に依存するルックアップの特殊なケースですか? VS2005は正しいか間違っていますか? ここで標準 C++ とは何でしょう?
回避策として、インラインの代わりに非インラインのフレンドを使用するつもりでしたが、それはフォワードとすべてで醜くなり、最初にここで取引が何であるかを尋ねたかった.
c++ - google-test クラスを私のクラスと友達にする方法は?
google-test TestCase クラスのフレンドをクラスに有効にする可能性があると聞きました。これにより、テストがプライベート/保護されたメンバーにアクセスできるようになります。
それを達成する方法は?
php - PHP: フレンド クラスと貪欲でない呼び出し元関数/クラス
debug_backtrace() 以外で呼び出し元の関数を取得する方法はありますか?
friendやinternalなどのスコープをシミュレートするための貪欲でない方法を探しています。
クラスAとクラスBがあるとしましょう。
今までdebug_backtrace()
は欲張りすぎる(私見ですが)を使っていました。
私は次のようなことを考えました:
特定の 1 つのクラスに制限したい場合は問題ないかもしれませんが、300 のクラスがあり、そのうちの 25 に制限したいとしましょう。
1 つの方法は、インターフェースを使用して集約することです。
public function __construct(CallerInterface $callerObj)
しかし、それでも醜いコードです。
さらに、そのトリックは静的クラスでは使用できません。
もっと良いアイデアはありますか?
c++ - 友情とオペレーターのオーバーロードのヘルプ
私は次のクラスを持っています
そしてこのソースファイル
私はヘッダファイルに他の機能を持っていません(ただの気まぐれです)。とにかく、「/* */」の最後の 2 つの関数が機能しません。ここで何が間違っているのでしょうか?
最初の関数は、2 つの配列が互いに等しいかどうかを確認することです。