問題タブ [non-member-functions]

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

c++ - C ++でのfriendの型にはまらない使用法

カプセル化に関するキーワードの一般的な使用例は知っていますが、 「仕事を終わらせる」ためだけにキーワードfriendが必要になったことが何度かありました。friendこれらのユースケースは私を満足させないので、いくつかの代替案があるかどうか疑問に思っています. 最初の最小限の例を次に示します。

デフォルト値がコンストラクター宣言で指定される前に、コンパイラーがインターフェイス内のネストされたクラスの宣言を確認する方法はありますか?operator|Foo

friendまた、テンプレート内でネストされたクラスの対称操作を定義する際に、キーワードを使用していることに気付くこともあります。例えば:

operator==、カプセル化の観点から友情を必要としません。しかし、operator==実際にはテンプレート化された関数ではなく、コンパイラーがテンプレート内のネストされたクラスの型を推測できないため、これはoperator==フリー関数として保持する唯一の合理的な「トリック」のようです。

私が言ったように、これらの選択は機能しますが、より良い選択/実践があるかどうか疑問に思っています.