次のコードでは、フレンド関数でクラスのプライベート メンバーにアクセスしようとしています。私の理解では、それをフレンド関数として正しく宣言していますが、VS2012 でエラーが発生しています。
error C2248: 'X::S::s_' : cannot access private member declared in class 'X::S'
誰かが私が間違っていることを提案できますか? これは、私が思いついたコンパイラ エラーを示す最も単純な例です。
namespace X
{
class S
{
friend std::string r(X::S &s);
std::unique_ptr<std::istream> s_;
};
}
std::string r(X::S &s)
{
auto& x = s.s_;
return "";
}