私が取り組んでいる問題は、クラス本体内で istream コンストラクターを定義するように求めていることです。クラスをSoundと呼びましょう。現在、このコンストラクターは独自の本体で関数を使用しています。ただし、関数は非メンバー関数である必要があります。別のファイルで定義していますが、クラス定義自体を含むヘッダーで宣言しています。非メンバー関数を既に含む他のファイルにヘッダーを配置しました。
問題は、非メンバー関数のパラメーターの 1 つに Sound 型があり、それが Sound オブジェクト型に対して操作を実行することです。
この関数をヘッダー ファイルで宣言するときに、クラス定義の前に置くと、オブジェクトが定義されていないというエラーが表示されます。
宣言を定義の後に置くと、コンストラクターは、その本体内の関数が未定義であることを通知します。
クラス本体に宣言を入れるとメンバー関数になります。
この問題は、関数をメンバー関数にすることができないと明示的に述べていないため、このキャッチ 22 を克服する方法があるかどうか疑問に思っています。