問題タブ [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++ - フレンドクラスからメンバーにアクセスできません
私はこのような宣言をしています
ただし、PtPathWriterから次のようなエラーが発生します
興味深いことに、代替フレンド宣言(メソッドを明示的に指定する)を使用すると、機能しますか?それらが異なる理由について何か考えはありますか?
IntelC++コンパイラ11.1.065btwを使用します。
c++ - フレンド、テンプレート、オーバーロード << リンカ エラー
これに関する以前の投稿で良い洞察を得ましたが、これらのコンパイル エラーが何を意味し、アシスタントを使用できるのかわかりません。テンプレート、フレンド、オーバーロードはすべて新しいため、3 in 1 はいくつかの問題を引き起こしています...
Point.h
ポイント.cpp
main.cpp
drupal - Friendlist に基づく Panels3 で、パネルの可視性のために PHP コードを使用しようとしています。
パネルの可視性を得るために真理値を取得しようとしています。ユーザーに属するハートビート メッセージのリストを表示するビューをパネルに配置しました。ディスプレイは機能しますが、パネルを表示しているユーザーに基づいてパネルへのアクセスを制限する方法がわかりません。目標は、パネルを友人と特定の役割を持つ一部の人にのみ表示することです。私が処理できる役割はありますが、友情の状態に基づいて PHP を機能させるには十分な知識がありません。私は漠然とそれが次のようなものになると推測しています:
ログに記録されたユーザーは、現在の uid 引数に基づいて表示されているユーザーと双方向です。
私の例が実際のコードとはまったく異なることはわかっていますが、前述のとおり、ここで説明することはあまりありません。
c++ - 同じテンプレートを使用してクラスをテンプレート化するためにフレンド関数を定義して使用するにはどうすればよいですか?
私は次のコードを書きました:
そして、次のエラーが発生します。
どうしたの?
PS私はVisualStudio2008を使用しています。
vb.net - VB.NET の視覚的継承: Friend VS Protected
一部のコンポーネント/コントロールが、アクセス修飾子 Friend で宣言されているのに対し、Protected で宣言されている場合、子フォームで視覚的に継承されないのはなぜですか。
たとえば、最初は「フレンド」だった親フォームに DataSet オブジェクトがあります (フォームにドラッグ アンド ドロップしたため、デザイナー ビューでコントロールとして表示されました)。期待どおりにコントロールを継承しませんでした。「保護」に変更すると、期待どおりに子フォームに表示されました。
Protected によって子フォームが継承されたコントロールを変更できることは承知していますが、これは上記の問題とどのように関連しているのでしょうか?
c++ - C++ では、クラスにフレンドを追加するとメモリ レイアウトが変更されますか?
また、クラスのどこで friend を宣言するかは重要ですか? フレンド クラスを追加するか、フレンド関数を追加するかは重要ですか?
f# - F# フレンド関数/クラス
F# でフレンド関数とフレンド クラス (C++ のように) を実装することは可能ですか?
更新: f# にはフレンド関数/クラスがなく、friend は将来の拡張のための予約済みキーワードでさえないため、F# のフレンド メカニズムに問題があり、開発者がそれを実装しないことを決定するのではないかと考えています。 (「保護された」アクセス修飾子など)。
提案 1 : ブライアン、署名ファイル - これが適切に機能するとは思わない。BX を評価するクロージャ (たとえば、A のインスタンスとは異なるオブジェクトである A のラムダ式) がある場合、それは機能しません。
提案 2 : Massif (+Mitya0), InternalsVisibleTo - 私にはわかりません.2 番目のクラスでこれを書いていますか、それともクラスをアセンブリ全体に公開していますか?
sql - 「友達」をアカウント所有者のプロフィールにリンクする
アカウント所有者が「友達」を持つアプリケーションを設計しています。それらの友達を元のアカウント所有者にリンクするにはどうすればよいですか? 効率的な SQL テーブルは次のようになります。
c++ - きれいなC ++粒状の友人と同等ですか? (回答: 弁護士と依頼人のイディオム)
public
C++ には、誰でも呼び出すことができるメンバーと、すべてのメンバーを特定の外部クラスまたはメソッドに公開するが、特定のメンバーを特定の呼び出し元に公開するための構文を提供しないfriend
宣言があるのはなぜですか? private
私は、既知の呼び出し元によってのみ呼び出されるいくつかのルーチンとのインターフェースを表現したいと考えています。それらの呼び出し元に、すべてのプライベートへの完全なアクセス権を与える必要はありません。私が思いつくことができる最高のもの(以下)と他の人による提案は、さまざまな間接性のイディオム/パターンを中心に展開しています。ここで、どの呼び出し元を明示的に示す単一の単純なクラス定義を持つ方法が本当に欲しいだけです(私よりも細かく)、私の子供、または絶対に誰でも)どのメンバーにアクセスできますか。以下の概念を表現する最良の方法は何ですか?
私はソフトウェア組織の第一人者ではありませんが、言語のこの側面では、インターフェイスのシンプルさと最小特権の原則が直接対立しているように感じます。私の希望のより明確な例は、、、またはインスタンス/メンバーメソッドのみがそれぞれ呼び出しを検討する必要があるおよびPerson
のような宣言されたメソッドを持つクラスです。主要なインターフェイスの側面ごとに 1 回限りのプロキシ クラスまたはインターフェイス クラスが必要になるのは、私にはよくありません。takePill(Medicine *)
tellTheTruth()
forfeitDollars(unsigned int)
Physician
Judge
TaxMan
Drew Hallからの回答: Dr Dobbs - Friendship and the Attorney-Client Idiom
上記のコードは、もともと「弁護士」ではなく「プロキシ」というラッパー クラスを呼び出し、参照の代わりにポインターを使用していましたが、それ以外は Drew が見つけたものと同等でした。(あまり自分を責めないでください...) パラメータの転送を示すために、'restricted' の署名も変更しました。このイディオムの全体的なコストは、パーミッション セットごとに 1 つのクラスと 1 つのフレンド宣言、セットの承認された呼び出し元ごとに 1 つのフレンド宣言、およびパーミッション セットごとに公開されたメソッドごとに 1 つの転送ラッパーです。以下のより良い議論のほとんどは、非常によく似た「キー」イディオムが直接的な保護を犠牲にして回避する転送呼び出しのボイラープレートを中心に展開しています。
c++ - このキー指向のアクセス保護パターンは既知のイディオムですか?
Matthieu M.は、この回答でアクセス保護のパターンを取り上げましたが、これは以前に見たことがありましたが、意識的にパターンを考慮したことはありませんでした。
ここでfriend
は、キー クラスの のみが にアクセスできますprotectedMethod()
。
これにより、 ofを作成Foo
するよりもきめ細かなアクセス制御が可能になり、より複雑なプロキシ パターンを回避できます。friend
Bar
このアプローチにすでに名前があるかどうか、つまり既知のパターンかどうかを知っている人はいますか?