Je pensais pouvoir faire ça:
class TestA
{
private:
class Nested
{
};
};
class TestB
{
public:
friend class TestA;
friend class TestA::Nested;
};
Mais je reçois une erreur:
Erreur C2248 'TestA :: Nested': impossible d'accéder à la classe privée déclarée dans la classe
Existe-t-il un moyen de se lier d'amitié avec une classe privée imbriquée? Comment fait-on ça?
J'ai rencontré cette erreur lors de la tentative de compilation d'un projet MSVC 6 dans MSVC 2017 (C++ 17). Je suppose que cela a fonctionné à l'époque.
Il suffit de commenter la ligne friend class TestA::Nested;
Comme ci-dessous:
class TestA
{
private:
class Nested
{
};
};
class TestB
{
public:
friend class TestA;
// friend class TestA::Nested;
};
Puisque TestA::Nested
A une portée similaire à TestA
, la méthode de TestA::Nested
Peut accéder aux membres privés/protégés de TestB.