問題タブ [friend-function]

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 に答える
3272 参照

c++ - C++のヘッダーで定義されたフレンド関数から関数を呼び出す

>>ヘッダーのテンプレートクラスで、演算子をフレンド関数として再定義しました。inputHelperその中で、ヘッダーで定義した別の関数を呼び出す必要があります。(入力ヘルパーは再帰的です)

ヘッダーファイルは次のとおりです。

ただし、コンパイル時に、と表示されます|140|error: 'inputHelper' was not declared in this scope|。どちらもヘッダーでフレンド関数として定義されているため、何か特別なことをする必要がありますか?それはクラスの範囲外であることは理解してinputHelperいますが、これを解決する方法がわかりません。

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

c++ - 演算子のオーバーロード:メンバー関数と非メンバー関数?

メンバー関数として宣言されたオーバーロードされた演算子は、1つのパラメーターしか持てず、他のパラメーターが自動的に渡されるため、非対称thisであると読みました。したがって、それらを比較するための標準は存在しません。一方、aとして宣言されたオーバーロードされた演算子はfriend、同じ型の2つの引数を渡すため、対称であり、したがって、それらを比較できます。

私の質問は、ポインタの左辺値を参照と比較できるのに、なぜ友達が好まれるのかということです。(非対称バージョンを使用すると、対称バージョンと同じ結果が得られます)STLアルゴリズムが対称バージョンのみを使用するのはなぜですか?

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

java - フレンド関数の行に何かがJavaに存在しますか?

こんにちは私はC++のfriend関数の行にメソッドを実装したいと思います。どうすればそれを実行できますか?そうでない場合、なぜJavaはそれを必要としないのですか?サンプルのようにそれを実装する方法を提案してください:

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

c++ - 演算子の定義<<クラス内

次のコードを検討してください。

フレンド関数としてではなく、クラスoperator<< でどのように定義できますか?このようなもの:

上記のコードは2つの引数を受け入れるため、コンパイルエラーが発生します。引数を削除するMyClassReferenceとエラーは修正されますが、その引数に依存するコードがあります。MyClassReferenceと同等です*thisか?

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

c++ - 友達がプライベートメンバーを取得していない

私はオーバーロードされた関数でシリアル化したいというクラスを持っていて、Packetオーバーロードされた関数で呼び出しましたが、それは友人として宣言されていますが、プライベート変数について不平を言っていますQDataStreamoperator>>operator<<stream << somIntMember

これが私のヘッダーです。

そしてここにCiodeが行きます

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

c++ - 複数のクラスの友達となる関数を作成する

以下のコードでは、クラス「horse」、「pig」、および「dog」のフレンドである関数「patient_count」を作成しようとしています。関数を1つのクラスの友達にすることはできますが、3つすべてのクラスの友達にすることはできません。私の間違いを教えてもらえますか?

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

c++ - 「友達を宣言するときにクラスを使用する必要があります」エラーを解決する方法は?

Dev-C++ から次のエラーが表示されます。

ただし、Microsoft Visual C++ コンパイラでコンパイルすると問題なく動作します。

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

c++ - C++0x、フレンド演算子 ""() を使用したユーザー定義リテラル

operator "" (...)をフレンド関数として定義することは可能かつ/または有用ですか?

名前空間でのみ定義されるルールのため、特に「有用」について考えています。特に、でoperator ""始まる識別子_はグローバル名前空間で予約されているためです。これはfriendここでこの規則に違反していますか? ですから、このカプセル化が不十分であることに何のメリットもありませんよね?

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

c++ - フレンド関数宣言時の変数スコープエラー

フレンド関数はクラスの変数にアクセスできません

いくつかのフレンド関数が、フレンドとして宣言されているクラスの変数にアクセスできないという問題があります。

実際のエラー テキストは次のとおりです。エラー: 'fid' はこのスコープで宣言されていません。これは、他のプライベート変数に対して繰り返されます。read、negative、write の 3 つの関数で同じエラーが発生します。

いくつかの注意事項: 1) このラボでは、両方のクラスで関数を使用できるようにコードを記述する必要があります。

g++ を使用して code::blocks を使用して Windows でこれをコンパイルしています。また、ターミナルから -g フラグを使用して g++ を使用して ubuntu でコードをコンパイルしようとしましたが、どちらも同じエラーが発生します。

あなたが持っている提案は大歓迎です。

ヘッダー ファイル

C++ プログラム

機能をテストするプログラム

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

c++ - テンプレート化されたクラスでの C++ 演算子のオーバーロード

ベクターを使用して内部的に実装されたテンプレート化された Stack クラスがあります。

これが私の(簡略化された)TStack.hの内容です:

そして、これは私の(簡略化された)メインクラスです:

そして、これはコンパイル結果です:

エラーメッセージの意味がわかりません。

operator+ 関数では、同じ方法で printAll() 内の反復子を取得しましたが、operator+ 関数内では正しく動作しません。operator+ 関数でイテレータを使用しないようにできることはわかっていますが、これを修正する方法に興味があります。