私は C++ を学んでおり、フレンド キーボードの使い方についてもっと学ぼうとしています。
ただし、ヘッダー ファイルでネストされたクラスを使用すると問題が発生します。
ヘッダー ファイルは宣言にのみ使用する必要があることはわかっていますが、cpp ファイルを含めたくなかったので、ヘッダー ファイルを使用して宣言とビルドを行いました。
とにかく、クラスのオブジェクトを作成し、その関数にアクセスするために厳密に使用したいmain.cppファイルがあります。
ただし、「friend」キーワードを理解しようとしているため、ヘッダー クラス オブジェクトを使用して main.cpp ソース ファイルでアクセスできる場所に、ヘッダー ファイルで FriendFunctionTest 関数を作成する方法が正確にはわかりません。
ここに私のヘッダーコードがあります:
#ifndef FRIENDKEYWORD_H_
#define FRIENDKEYWORD_H_
using namespace std;
class FriendKeyword
{
public:
FriendKeyword()
{//default constructor setting private variable to 0
friendVar = 0;
}
private:
int friendVar;
//keyword "friend" will allow function to access private members
//of FriendKeyword class
//Also using & in front of object to "reference" the object, if
//using the object itself, a copy of the object will be created
//instead of a "reference" to the object, i.e. the object itself
friend void FriendFunctionTest(FriendKeyword &friendObj);
};
void FriendFunctionTest(FriendKeyword &friendObj)
{//accessing the private member in the FriendKeyword class
friendObj.friendVar = 17;
cout << friendObj.friendVar << endl;
}
#endif /* FRIENDKEYWORD_H_ */
私の main.cpp ファイルでは、次のようなことをしたかったのです:
FriendKeyword keyObj1;
FriendKeyword keyObj2;
keyObj1.FriendFunctionTest(keyObj2);
ただし、main.cpp はヘッダー ファイルで FriendFunctionTest 関数を見つけることができないため、明らかに機能しません。
この問題を解決するにはどうすればよいですか?
もう一度お詫び申し上げます。オンラインで C++ を学ぼうとしているところです。