問題タブ [friend-class]

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 投票する
4 に答える
760 参照

c++ - 再帰的なフレンド クラス

これを回避する方法はありますか:

エラーが発生します:

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

c++ - c++で考える際に遭遇するフレンドイテレータとフレンドクラスイテレータの違いは何ですか?

Thinking in C++ Volume 1、第 16 章: テンプレートの紹介。コンテキスト:

ただ言うのではなく、次のことに注意してください。

このコードには次のものがあります。

「iterator」という名前は、インクルードされたファイルから既にスコープ内にあるため、これは重要です。

上記のエッケルは実際にはどういう意味ですか? 正しくコンパイルされているようfriend iteratorで、違いはわかりません。誰でも答えを教えてもらえますか? ありがとう

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

javascript - JavaScript の「フレンド クラス」

Widget オブジェクトを作成する Factory クラスがあります。Factory オブジェクトは、後で Widget オブジェクトの「プライベート メソッド」をコールバックして、何らかの ajax 情報を渡す必要があります。これまでのところ、私が思いついた唯一の実装は、プライベート メソッドをファクトリに返す Widget にパブリック メソッドを作成し、それ自体を削除することです。Factory は、プライベート メソッドへのポインタを保持しながら、新しい Widget を返します。 . 簡単な例を次に示します。

私が求めている効果を達成するためのより良い方法はありますか、それともこれはかなり合理的なアプローチですか? 私はそれが機能することを知っていますが、注意すべき落とし穴に足を踏み入れているかどうかに興味があります。

0 投票する
5 に答える
484 参照

c++ - 静的関数呼び出しでフレンド クラスがクラッシュするのはなぜですか?

このコードはコンパイルされますが、gcc コンパイラまたはhttp://www.ideone.com/を使用すると、プログラムがクラッシュします。それはコンパイラ エラーですか、それともフレンド クラスについてもっと理解する必要がありますか?

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

c++ - 友達クラスは私とうまくいかないのですか?

friend class初めて対応しようと思います。以下のコードを書きました。

コンパイラは、私ができないことを教えてくれますroot.x=3;, 何が問題なのですか??

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

c++ - フレンドクラスの概念に宣言が必要ないのはなぜですか?

私は最近friend classC++ の概念について学びました (私は少しググってみましたが、最も重要な部分を思い出すまで、この答えは私を笑わせました)、それをプロジェクトに取り入れようとしています。現在取り組んでいます。簡潔な質問は最後に選択されますが、一般的に、作業コードに前方宣言が完全にないことに混乱しています。

すべてのクラスは (サブ) フォルダーによって分離され、それぞれが個別の.hおよび.cppファイルに分けられますが、依存関係について理解するにはこれで十分なはずです。

さて、私はこれをすべて実際にすべての依存関係でコンパイルするパーティーを開催しました (それを機能させるには、最終的にクラス図に書き留める必要がありました) が、今ではそうです。実際に私を混乱させているのは、前方宣言が必要ないということです。以前から前方宣言について知っていたので、念のため、この答えで記憶をリフレッシュしました。

だから、それを明確にするために、私の質問: をclass TLS友人として宣言するとき、明示的な前方宣言が必要ないのはなぜですか? friend classそれは、宣言がすべてそれ自体の前方宣言であることを意味しますか? 私にとって、直感的に、ここに何かが欠けています...そして、コンパイルして正常に動作するので、誰かが私の直感を修正するのを手伝ってくれますか? :D

PS質問とたくさんのコードの長い紹介で申し訳ありません。私のコードの概念についてコメントしないでください - 友人はここで良いです、私はそれが私の現在のプロジェクトにとって正しいと確信しています (このスケルトンからは少しわかりにくいです)。どこにも前方宣言が必要なかった理由を知りたいだけです。

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

c++ - C ++テンプレート:部分的なテンプレート仕様とフレンドクラス

どういうわけか部分的なテンプレート仕様をフレンドクラスにすることは可能ですか?つまり、次のテンプレートクラスがあると考えてください

これで、たとえばポインタの部分的な特殊化ができました

私が達成したいのは、可能な限りすべてのX<T*>人の友達クラスであるということです。つまり、の友達である必要があります。X<S>SX<A*>X<B>

もちろん、私はXでの通常のテンプレートフレンド宣言について考えました。

ただし、これはコンパイルされません。g++は次のように通知します。

test4.cpp:34:15:エラー:' template<class T> class X'の特殊化は名前空間スコープに表示される必要があります

test4.cpp:34:21:エラー:部分的な特殊化' X<S*>'宣言された'友達'

これはまったく不可能ですか、それとも回避策がありますか?

私が尋ねている理由はX<T*>、任意のクラスからこのクラスを作成するコンストラクターが必要だからですX<S>SのサブタイプでなければなりませんT)。

コードは次のようになります。

さて、コンパイラーはもちろん、x.tそれがプライベートであるため、コンストラクターでは見えないという不満を言います。これが、部分的な専門の友達クラスが必要な理由です。

0 投票する
6 に答える
1274 参照

c++ - なぜここで「友達」が必要なのですか?(C++)

qml ビューアー (4.8 および 5.0 用) は次のように実装されます。

.h(eader) には次のものがあります。

次に、.CPP ファイルで:

friendここで使用する必要があるのはなぜですか?friend誰かがクラスを使用する理由はわかりません。フレンドクラスの実際の用途はありますか (誰もがなくても生きていけるエキゾチックを除いて)?

.h #インクルード

.cpp

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

c++ - 友人としての演算子のオーバーロード

friend私は、自分のクラス以外のプライベートメンバーにアクセスするために、という単語を使用することを考えています。たとえば、クラスAがあり、AIのメソッド内のクラスBの属性のプライベートメソッドにアクセスする必要がある場合、そのメソッドをフレンドとして宣言できます。

ただし、次のコードを参照してください。

友人として、オペレーターに過負荷をかける可能性のあるメリットはどれですか?なぜ誰かが興味を持っているのか、私にはよくわかりません。

私はそれについてたくさん読みましたが、明確な考えがわかりませんでした。

誰かが私が事実を観察できる小さな例を書くことができますか?

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

c++ - C++ でのフレンド関数の使用

フレンド関数について読んだだけで、クラス B のフレンド関数「Print」を使用して、クラス A のプライベート変数「number」にアクセスしようとしています。Visual Studio で作業しています。コードをコンパイルすると、次のようなさまざまなエラーが多数発生します。

C2011: 'A': 'class' 型の再定義
C2653: 'B': はクラスまたは名前空間の名前ではありません

私と一緒に辛抱強く、私の目標を達成するための適切な方法を示してください。

ここに私のファイルがあります:

A.cpp:

Bh:

B.cpp:

main.cpp: