問題タブ [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# - C# のフレンド アセンブリ
[InternalsVisibleTo()] 属性を使用して「フレンド アセンブリ」を作成しようとしていますが、うまく機能していないようです。署名済みのフレンド アセンブリを作成するための Microsoft の指示に従いましたが、どこが間違っているのかわかりません。ここで私の手順を詳しく説明します。誰かが私の意図的な間違いを見つけてくれることを願っています...?
厳密な名前のキーを作成し、公開キーを抽出します。したがって、次のようになります。
sn -k StrongNameKey
sn -p public.pk
sn -tp public.pk
各プロジェクトに厳密な名前のキーを追加し、署名を有効にします。
Internalsというプロジェクトと内部プロパティを持つクラスを作成します。
TestInternalsVisibleTo という別のプロジェクトを作成します。
Internals プロジェクトの AssemblyInfo.cs ファイルを編集し、必要な属性を追加します。
そして最後に...ビルド!
次のエラーが表示されます。
エラー CS0122: 保護レベルのため、'Internals.ClassWithInternals' にアクセスできません
エラー CS1729: 'Internals.ClassWithInternals' には 1 つの引数を取るコンストラクターが含まれていません エラー CS1061: 'Internals.ClassWithInternals' には 'Message' の定義が含まれておらず、タイプ 'Internals.ClassWithInternals' の最初の引数を受け入れる拡張メソッド 'Message' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
基本的に、InternalsVisibleTo 属性を使用していないかのようです。さて、私はツールのせいにするつもりはありません。誰?
c++ - 友情と派生クラス
次のクラス階層があるとします。
私もそれを変更できると思いますa->Base::foo()
がfoo()
、クラスでは純粋に仮想であるBase
ため、呼び出しはDerived::foo()
とにかく呼び出しになります。
ただし、コンパイラはを拒否しているようa->foo()
です。論理的だと思いますが、その理由がよくわかりません。私は何かが足りないのですか?この特殊なケースを処理することはできません(すべきではありません)?
ありがとうございました。
c++ - C++ でのフレンド宣言
Bruce eckel による Thinking in C++ には、次のようにフレンド関数に関する例が示されています。
今、彼はこれを説明しました:
Y::f(X*) は X オブジェクトのアドレスを取ることに注意してください。型のサイズに関する完全な情報がなくても、渡されるオブジェクトに関係なく固定サイズのアドレスを渡す方法をコンパイラが常に認識しているため、これは重要です。ただし、オブジェクト全体を渡そうとする場合、コンパイラは、Y::g(X) などの関数を宣言できるようにする前に、X の構造定義全体を確認して、サイズとその渡し方を知る必要があります。
しかし、私が試したとき
構造体 Y の宣言のように、エラーは表示されません。理由を説明してください。
vb.net - VB.NET:「friend」修飾子は何をしますか?
'friend'修飾子はVB.NETで何をしますか?
Visual StudioのGUIコンポーネントのデフォルトの修飾子であるのはなぜですか?
vb.net - コントロールのデフォルトのModifiersプロパティがPrivateになるように、VB.NETプロジェクトのプロジェクトのデフォルトを設定します
VB.NET winformsプロジェクトのプロジェクトのデフォルトを設定して、winformsに追加されたコントロールのデフォルトの修飾子がプライベート(フレンドではない)になるようにすることは可能ですか?
プロパティウィンドウに「modifiers」プロパティがあるので、個々のコントロールごとに設定できます...ただし、プロジェクトを変更したいので、今後は自分自身と他の開発者が特にプライベートから変更することを決定する必要があります。(私は彼らがそうすることを強く思いとどまらせます)。
これを行う方法はないと思いますが、しばらく前に別のフォーラムで、アドインを使用すると可能であると誰かが述べました(ただし、アドインの名前や入手先は指定していません)。
c++ - テンプレート化されたクラスのコンストラクターと友達になる方法は?
どして
結果
../src/main.cpp:15:エラー:テンプレートとしてのコンストラクターの無効な使用
../src/main.cpp:15:注:「B::classB」の代わりに「B::B」を使用してコンストラクターに修飾名を付けます
まだ結果にfriend B<int>::B<int>()
変更friend B<int>::B()
../src/main.cpp:15:エラー:いいえ'void B :: B()'クラス'B'で宣言されたメンバー関数</p>
テンプレートを完全に削除しながら
コンパイルと実行は問題なく実行されます-私のIDEが友人B::B()は無効な構文であると言っているにもかかわらず?
c++ - 「フレンド」関数と << 演算子のオーバーロード: クラスの演算子をオーバーロードする適切な方法は何ですか?
私が取り組んでいるプロジェクトでは、Score
以下で定義されているクラスがありますscore.h
。私はそれをオーバーロードしようとしているので、<<
操作が実行される_points + " " + _name
と出力されます。
これが私がやろうとしたことです:
返されるエラーは次のとおりです。
(このエラーは実際には 4 回表示されます)
オーバーロードをフレンド関数として宣言することで、なんとか機能させることができました。
またScore::
、score.cpp の関数宣言から を削除します (事実上、メンバーとして宣言しません)。
なぜこれは機能するのに、前のコードは機能しないのですか?
御時間ありがとうございます!
編集
ヘッダーファイルのオーバーロードへの言及をすべて削除しました...それでも、次の(そして唯一の)エラーが発生します。binary '<<' : no operator found which takes a right-hand operand of type 'Score' (or there is no acceptable conversion)
main() のテストで適切なオーバーロードが見つからないのはなぜですか? (それは含まれていません、私はチェックしました)
以下はフルスコアです.h
c++ - C++ フレンド クラス std::vector
次のことを移植可能に行うことは可能ですか:
上記のコンパイルを試みるメッセージの例:
ありがとう
回避策はありますが、これがどのように可能になるのか興味があります
php - PHP5.3で友情をエミュレートする簡単な方法はありますか
システム内の他のクラスと友達になるために、いくつかのクラスが必要です。この機能の欠如により、公開してはならないいくつかのメソッドを公開しました。その結果、私のチームのメンバーはコードをひどく醜い方法で実装し、混乱を引き起こします。
PHP 5.3で友情を定義する方法はありますか?
(私はhttp://bugs.php.net/bug.php?id=34044を知っています。簡単な解決策がない場合は、そこで投票することをお勧めします)。
c++ - 友達、テンプレート、オーバーロード<<
フレンド関数を使用して<<とテンプレートをオーバーロードし、テンプレートに慣れようとしています。これらのコンパイルエラーが何であるかわかりません:
このファイルの場合
私のヘッダーは次のようになります:
私のヘッダーも警告を出します:
理由もわかりませんでした。何かご意見は?ありがとう。