フレンド関数をテストする小さなコードを書きました。特定のクラスに属していないメソッドでは問題なく機能しましたが、クラスに入れようとすると、アクセスできるのはパブリック変数だけです(オブジェクトと同じように)。
#include <iostream>
#include <conio.h>
using namespace std;
class something{
int ip = 100;
public:
int x = 100;
void getIP();
friend void cIP::changeIP(something);
};
void something::getIP(){
cout << ip << endl;
}
class cIP{
public:
int i;
cIP();
cIP(int nIP);
something some;
void changeIP(something s);
};
cIP::cIP(){
i = 100;
}
cIP::cIP(int nIP){
i = nIP;
}
void cIP::changeIP(something s){
s.ip = i;
}
s.ip は、メンバーにアクセスできないというエラーを表示します。