問題タブ [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.

0 投票する
3 に答える
18680 参照

c++ - 友達とインライン メソッド、ポイントは何ですか?

ヘッダーに、自分で次のように書いていないことがわかります。

このメソッドがフレンドとして宣言されている理由がわかりません。関数が別の場所で定義されていて、クラスの内部メンバーにアクセスする必要がある場合は理にかなっていると思いましたが、インラインでメンバーにアクセスする必要さえないため、ここではそうではありません。

どう思いますか?「友達」はダメですか?

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

c++ - C++ のフレンド スコープ

A、B、Cの3つのクラスがある場合、AとBは友達です(双方向)。また、B と C はフレンド (双方向) です。A には B へのポインターがあり、B には C へのポインターがあります。A がポインターを介して C のプライベート データにアクセスできないのはなぜですか?

明確にするために、これは純粋に理論的な C++ 言語の質問であり、設計に関するアドバイスの質問ではありません。

0 投票する
7 に答える
52331 参照

c# - Cシャープの「友達」キーワードに相当するものは何ですか?

Cシャープの「友達」キーワードに相当するものは何ですか?

「内部」キーワードはどのように使用しますか?

「internal」キーワードは C# の「friend」の代わりであると読みました。

ソース コードがある C# プロジェクトで DLL を使用していますが、既存のコードを変更したくありません。私はクラスを継承しており、継承したクラスを好きなように使用できます。問題は、親クラスのほとんどのコードに保護されたメソッドがあることです。フレンドを使用すると、これらの保護されたメソッドにアクセスしたり呼び出したりできるようになりますか?

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

c++ - Friend テンプレート関数 (非テンプレート クラス)、C++

非テンプレート (つまり「通常の」) クラスがあり、テンプレート フレンド関数が必要な場合、コンパイラ エラーを発生させずに記述するにはどうすればよいですか? 私がやろうとしていることを説明する例を次に示します。

私は Visual Studio 2005 を使用していますが、特定のエラーはエラー C2063であり、「バー」は関数ではないことを示しています。ここで何を別の方法で行う必要がありますか?

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

c++ - フレンドクラス:継承されたクラスもフレンドではありませんか?

C ++では、クラスBと友達のクラスAがあります。

Bの継承されたクラスはクラスAの友達ではないようです。

私はこれがC++の制限ですか、それとも私の間違いですか?

これが例です。コンパイルすると、「returnnewMemento」という行でエラーが発生します。

Memento :: Memento:Mementoで宣言されたプライベートメンバーにアクセスできません。

もちろん、FooOriginatorをMementoの友達として追加することもできますが、これは、Originatorが継承するすべてのクラスをMementoの友達として追加する必要があることを意味します。これは避けたいことです。

何か案が ?

0 投票する
11 に答える
25909 参照

c++ - C++ でフレンド クラスを使用する場合

重複の可能性:
C++ で「friend」を使用する必要があるのはいつですか?

私は自分の C++ (私は Java 開発者です) をブラッシュアップしてfriend classいて、しばらく忘れていたキーワードに出くわしました。これはキッチン シンクの一部にすぎない機能の 1 つですか、それとも単なるバニラ ゲッターではなく、これを行う正当な理由があるのでしょうか? 誰がデータにアクセスできるかを制限するという違いは理解していますが、これが必要になるシナリオが思い浮かびません。

注: 同様の質問を見たことがありますが、具体的には、これは単なる高度な機能であり、コードを見ている人が何をしているのかを理解するまで混乱させること以外に真の価値はありませんか?

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

msbuild - MSBuild が C++/CLI フレンド アセンブリのビルドに失敗する

私は Visual Studio 2008 SP1、2 つの C++/CLI プロジェクト、proj1 と proj2 を持っています。proj2 は proj1 に依存していますが、奇妙な方法です (以下を参照)。プロジェクトの依存関係で、proj2 が proj1 に依存することを指定します。また、proj2 参照には proj1 が含まれます。次に、proj1 を proj2 のフレンドにしたいので、「フレンド アセンブリ」の MSDN ページにあるように、proj2 のどこかに次のコードを記述します。

コンパイルすると、proj1.dll が既に参照されているため、proj2 プロジェクト設定からプロジェクト参照を削除する必要があることがわかります (したがって、/FU フラグを削除します)。

バグ (?) が発生します: proj2 から proj1 の参照を削除しても、ソリューションの Project Dependencies で proj2 が proj1 に依存することを指定すると、VS2008 ですべて正常にコンパイルされます。しかし、MSBUILD はプロジェクト参照を解析し、proj2 用の新しい一時プロジェクトを作成し、ADDS /FU:proj1.dll を作成し、BUILD は失敗します。

質問 1: この MSBuild の動作を無効にする方法はありますか?

次に、プロジェクトの依存関係で依存関係を削除すると、MSBuild は正常にビルドされますが、Visual Studio は proj1 と proj2 を並行してコンパイルしようとして失敗します。これは、proj2 がはるかに小さく、最初にコンパイルされるためです...ビルドと実行は役に立ちますが、すべての開発者マシンで実行する必要があります。この設定をソリューションに保存することはできません。ビルドが遅くなるなど...

質問 2:「プロジェクトの依存関係」を条件付きオプションにする方法はありますか? 私はVS2008とMSBuildのためにそれをしたい...

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

c++ - どのようなシナリオで、メンバー関数をフレンドとして宣言する必要がありますか?

どのようなシナリオで、メンバー関数を「フレンド関数」として宣言しますか?..OOP の「カプセル化」の中心的な概念の 1 つに反する「フレンド関数」は、どのような正確な目的を果たしますか?

0 投票する
8 に答える
646 参照

c++ - ピア間の C++ 友情は健全ですか?

クラス フレンドシップは C++ の最後の手段の 1 つですが、このパターンは理にかなっていますか?

このパターンの理由は、ピアがすべて同じランクにあり、互いに知識を共有する必要があるためです。ただし、この知識は秘密です。ピア以外の誰も使用しないか、プログラムが無効になるためです。 .

これの非常に現実的な例の 1 つは、あるピアが別のピアからコピー構築されている場合、そのソース ピアからの秘密情報にアクセスする必要があるということです。

0 投票する
3 に答える
2141 参照

c++ - 友情はC ++で継承されますか?

Baseクラスがあるとします:

そして、から継承する別の(異なる)クラスがありBaseます:

友情も受け継がれる?