結論: はい。ただし、VC++ 11.0.60610.01 の時点では、Intellisense は気に入らないでしょう。
私は通常、友情を使用しませんが、今回は本当に必要で、Visual Studio 2012 で動作させることができません。インテリセンスのバグである可能性があります (コードは正常にコンパイルされます)。私のコードに何か問題があった場合。これは問題を再現します:
class B;
class A
{
public:
int fun(B b);
};
class B
{
public:
friend int A::fun(B b);
B() : member(0) {}
private:
int member;
};
int A::fun(B b)
{
return b.member; // Error: B::member is inaccessible.
}
int main()
{
A a;
B b;
std::cout << a.fun(b);
return 0;
}
上記のコードはコードパッドでは正常にコンパイルされますが、VS2012 では Intellisense エラーが返されます。私が間違っていることはありますか?