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

c++ - Friend 関数の宣言されていない識別子

私は OpenCV と Qt 5 を使用しています。私が行っている作業のために、マウス コールバックを名前付きウィンドウに渡す必要があります。ただし、クラスのプライベート メンバー変数を確認することはできません。

ここにいくつかのコードがあります:

フレンド機能:

何が間違っているのかわかりません。これがこれを宣言する正しい方法だと確信しています。プレビューとドラッグは宣言されていない識別子であると言っています。残念ながら、プライベートメンバーにアクセスする必要があり、 this 引数が隠されているため、メンバー関数へのポインターを渡すことができないため、この方法で行う必要があります。

誰でも助けることができますか?ありがとうございました!

0 投票する
1 に答える
1412 参照

c++ - C ++でフレンド関数を使用する際に助けが必要

私は C++ の初心者です。フレンド関数の使用を実装する簡単なプログラムを作成しました。コードは次のとおりです。

C++ で次のエラーが発生します。

EDIT Thanks.It は問題を解決しました。

privateしかし、それは私を別の質問に導きます。現在、どのクラスまたは関数も単にフレンド関数を使用してプライベートデータメンバーにアクセスできるため、フレンドキーワードは使用の目的を危うくしているのではないでしょうか。データ メンバーのpublic代わりにprivate.Whats を使用する際の特別な点はprivate何ですか?

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

c++ - C++ でフレンド関数を保護する方法

C++ でフレンド関数の学習を始めたばかりです。これは、概念探索に使用しているプログラムです。

今、誰もがグローバルに定義されたフレンド関数を使用して classおよび classのプライベート メンバーにアクセスできるようになったため、 classoneおよびclass のセキュリティが侵害されているのではないかと心配しています。これらのフレンド機能を保護したり、使用を制限したりするにはどうすればよいですか?twoonetwo

0 投票する
1 に答える
2021 参照

c++ - クラスのフレンド関数はエラーを生成します:「宣言された '___' メンバー関数はありません」

0 投票する
1 に答える
486 参照

c++ - boost::apply_visitor をクラスビジターのフレンド関数にする方法は?

boost::apply_visitor(2 つのバリアントのいずれか) をクラス ビジターのフレンド関数にする方法は?

次のことを試しましたfriend result_type boost::apply_visitor<>(decltype(*this) &, instruction_type const &);が、これは機能しません。*thisから派生したboost::static_visitor(またはusing result_type = ...;typedef を持っている) 命令タイプは、boost::variantいくつかの特定のタイプです。*thisセクションに必要なすべてのoperator ()-s がありprivateます。

そのような宣言の正しい形式は何ですか?

0 投票する
1 に答える
63 参照

c++ - フレンド機能が実行されていません

ヘッダー ファイルでフレンド関数を宣言し、.cpp ファイルで定義しましたが、コンパイルすると、変数が「このスコープで宣言されていません」と表示されます。関数がクラスのフレンドとしてラベル付けされている場合、その関数はそのクラスのすべてのメンバーに直接アクセスできると理解していますが、なぜこのエラーが発生するのでしょうか?

私の .h ファイル:

my.cpp ファイルの関数

注: 私の Main.cpp では、オブジェクト 'emp2' を作成しています。これは、パラメーターとして関数に渡されます。

0 投票する
0 に答える
126 参照

c++ - 別のクラス テンプレートから変数にアクセスする

テキスト ファイルからデータをロードするためにデータ ローダー クラスで使用できるコンテナー クラスのシステムを作成しようとしています。

2 つのクラスのデータを次に示します。

これらは私の2つのコンテナクラスです:

そして最後に私のデータローダーテンプレート:

Customer と Tour で >> 演算子をオーバーロードして、ifstream を渡すことができるようにしました。ストリームから行が取得され、トークン化され、オブジェクト インスタンス変数に入れられます。

コンテナー クラスは挿入を順番に処理し、データ ローダーはリストを管理し、オブジェクトに渡せるように ifstream を作成します。

私の最初の質問 - 解決済み - は、どのように DataLoader クラスを機能させて、メインで初期化できるようにするかです。

次に、次のインスタンス変数を自動的にインスタンス化します。

またはそれは可能ですか?

私の2番目の問題 - 未解決 - これは次のとおりです。

最初に顧客ファイルをロードし、そのリストにデータを入力しています。

その後、予約した顧客の顧客 ID を持つツアーを読み込む必要があります。顧客情報に簡単にアクセスできるように、それらの顧客を各ツアー オブジェクトのポインターのベクトルに格納したいと考えています。

現時点では、customerID を文字列のリストとして保存しています。ツアーがすべて読み込まれると、custList を検索する関数に custList を渡し、文字列のリストと一致させます。

これは、文字列の 1 つと他のポインターの 2 つのリストを維持し、基本的にすべてのデータを二重に処理する必要があることを意味します。

オーバーロードされた Tour の >> 演算子内から custList インスタンス変数にアクセスし、Tour オブジェクトを作成するときにポインタのリストを生成する方法があるかどうか疑問に思っていました。

技術的にはすべてが DataLoader クラスのスコープ内で発生しているので、可能だと思いますが、どうすればよいかわかりません..多分それをフレンドクラスにしますか? 私はそれをやろうとしましたが、これまでのところ運がありません..

どんな助けでも大歓迎です.長い説明で申し訳ありません.うまくいけばそれは理にかなっています..

0 投票する
1 に答える
234 参照

c++ - 別のテンプレート クラスからインスタンス変数にアクセスする

(ほとんどの場合、 2 つの問題を分離するために、別のクラス テンプレートから変数にアクセスすることから貼り付けられます)

テキスト ファイルからデータをロードするためにデータ ローダー クラスで使用できるコンテナー クラスのシステムを作成しようとしています。

2 つのクラスのデータを次に示します。

これらは私の2つのコンテナクラスです:

そして最後に私のデータローダーテンプレート:

Customer と Tour で >> 演算子をオーバーロードして、ifstream を渡すことができるようにしました。ストリームから行が取得され、トークン化され、オブジェクト インスタンス変数に入れられます。

コンテナー クラスは挿入を順番に処理し、データ ローダーはリストを管理し、オブジェクトに渡せるように ifstream を作成します。

これは私の問題です:

最初に顧客ファイルをロードし、そのリストにデータを入力しています。

その後、予約した顧客の顧客 ID を持つツアーを読み込む必要があります。顧客情報に簡単にアクセスできるように、それらの顧客を各ツアー オブジェクトのポインターのベクトルに格納したいと考えています。

現時点では、customerID を文字列のリストとして保存しています。ツアーがすべて読み込まれると、custList を検索する関数に custList を渡し、文字列のリストと一致させます。

これは、文字列の 1 つと他のポインターの 2 つのリストを維持し、基本的にすべてのデータを二重に処理する必要があることを意味します。

オーバーロードされた Tour の >> 演算子内から custList インスタンス変数にアクセスし、Tour オブジェクトを作成するときにポインタのリストを生成する方法があるかどうか疑問に思っていました。

技術的にはすべてが DataLoader クラスのスコープ内で発生しているので、可能だと思いますが、どうすればよいかわかりません..多分それをフレンドクラスにしますか? 私はそれをやろうとしましたが、これまでのところ運がありません..

どんな助けでも大歓迎です.長い説明で申し訳ありません.うまくいけばそれは理にかなっています..