問題タブ [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 投票する
5 に答える
1464 参照

c++ - 内部クラスをパラメーターとして受け取る名前空間でフレンド関数を宣言するにはどうすればよいですか?

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

G++ 4.4.3 は私に教えてくれます:

friendfun-innerclass.cpp:21: エラー: 'int foo::bar(A::B&)' は 'foo' 内で宣言されている必要があります

しかし、私は宣言することはできません:

A::B が宣言されていないため、クラス A の定義の前。そして、明らかに「クラス A::B」を宣言することはできません。クラス BI を宣言するには、クラス A の定義を指定する必要があり、私の知る限り、「フレンド」宣言はクラス A の定義内にある必要があります。

私にとって奇妙なのは、関数 "bar()" を名前空間 foo から取り出すと、すべて正常に動作することです。関数が名前空間内にあるか、名前空間内にないかによって、コンパイラがクラス内のフレンド関数宣言を受け入れるかどうかが変わることは、直感に反しているように思えます。

これを機能させるために、すべての宣言などを適切に構造化する方法を知っている人はいますか?

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

c++ - ストリーム演算子の C++ 部分テンプレート特殊化

operator<< で使用するフレンド関数を持つ Matrix クラスがあります。これはすべて正常に動作しますが、Matrix クラスがそのテンプレート パラメーターとして Matrix を持っている場合 (つまり、クラスのインスタンスが Matrix< Matrix< char > > のように宣言されている場合) に異なる動作をするように、そのフレンド関数を部分的に特化したいと考えています。クラス定義で最初に持っていた

そして追加してみました

しかし、これにより、コンパイラから複数の宣言エラーが発生しました。これを達成する方法がわかりません。

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

c++ - フレンド関数なしではオーバーロードできない C++ 演算子はどれですか?

フレンド関数なしではオーバーロードできない C++ 演算子はどれですか?

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

c++ - c ++エラー:(プライベートデータメンバー)はこのスコープで宣言されていません

私がそのようなクラスを持っているとしましょう:

このオーバーロードされたフレンド関数では、次の値を設定しようとしています。myIng

私の考えでは、これは、Friend関数のIngredientクラスのプライベートデータメンバーの値を設定していて、Friend関数がすべてのプライベートデータメンバーにアクセスできる必要があるため、機能するはずです。

しかし、私はこのエラーを受け取ります: ‘myIng’ was not declared in this scope なぜこれが起こっているのかについて何か考えはありますか?

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

c++ - フレンド関数演算子を初期化できません<<

友達の機能に問題があります。

これが必要なコードの唯一の部分だと思います。私の問題はこの関数にあります。問題は最初の行にあると書かれていますが、それがどれほど正確かはわかりません。

エラーが発生します:lab10.cpp:95:エラー:フレンド関数âoperator<<âを初期化できません

lab10.cpp:95:エラー:フレンド宣言がクラス定義にありません

前もって感謝します

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

c++ - ローカルクラスのフレンド機能の使い方は?

次の例に示すように、フレンド関数はローカル クラスで宣言できるためです。外部からアクセスできない関数定義で定義されている場合、ローカルクラスのメンバーにアクセスするためにどのように使用できますか?

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

c++ - フレンド関数を使用せずにオブジェクトメンバーを出力するための演算子<<のオーバーロード

長いギャップの後でcppを更新し、演算子のオーバーロードメソッドを理解しようとしています。オブジェクトのメンバーを出力するために「operator<<」をオーバーロードしようとしました。でも友達機能を使わないとできません。フレンド関数を使わない方法を探しています。

これが私のクラス定義です:

関数の実装

main関数からの呼び出し

ここで私の質問は、friend関数を使用せずにメソッド1タイプの呼び出しを実現したいということです。しかし、わからない、それはcppで可能かどうか。いくつかの実装を試しましたが、すべてコンパイルエラーが発生します。私がここで見逃している点を理解するのを手伝ってください。

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

c++ - クラスが名前空間内に記述されている場合のフレンド関数の使用方法

名前空間内にクラスを作成しましたが、名前空間を使用または呼び出す必要があるときに問題が発生します。コンパイラ エラーの考えられる理由は何ですか??

コンパイラ エラー -

test1.cpp: 関数 'void use_class()':
test1.cpp:17:6: エラー: 'void name1::show::accept_data()' は非公開
です test1.cpp:31:16: エラー: このコンテキスト内
test1.cpp:24:6: エラー: 'void name1::show::display_data()' は非公開
です test1.cpp:32:17: エラー: このコンテキスト内

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

c++ - 比較演算子を定義するためにフレンド関数を使用する必要があるのはなぜですか?

http://www.learncpp.com/cpp-tutorial/142-function-template-instances/から

次のように実装することもできます。

2番目の実装を使用することの欠点はありますか?

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

c++ - フレンド関数は、静的ライブラリで定義されたクラスのプライベートメンバーにアクセスします

私はC++で書かれた静的ライブラリを持っています。静的ライブラリで定義されているクラスのヘッダーファイルもあります。

静的ライブラリで定義されたクラスのプライベートメンバーにアクセスして、クラス宣言にフレンド関数を導入できますか?