私はこれを行うことができると思いました:
class TestA
{
private:
class Nested
{
};
};
class TestB
{
public:
friend class TestA;
friend class TestA::Nested;
};
しかし、エラーが発生します:
エラーC2248 'TestA :: Nested':クラスで宣言されたプライベートクラスにアクセスできません
ネストされたプライベートクラスを友だちにする方法はありますか?どうすればいいのですか?
MSVC 2017(C++ 17)でMSVC 6プロジェクトをコンパイルしようとすると、このエラーが発生しました。当時はうまくいったと思います。
以下のようにfriend class TestA::Nested;
行をコメント化してください:
class TestA
{
private:
class Nested
{
};
};
class TestB
{
public:
friend class TestA;
// friend class TestA::Nested;
};
TestA::Nested
はTestA
と同様のスコープを持っているため、TestA::Nested
のメソッドはTestBのプライベート/保護されたメンバーにアクセスできます。