class X
{
int Xi;
class Y
{
int Yi;
void func()
{
X x;
x.Xi = 5;
}
};
void func()
{
Y y;
y.Yi = 5;
// ^^^^ 'X::Y::Yi': cannot access private member declared in class 'X::Y'
}
};
Я узнал о паттерне Memento, и в книге, которую я прочитал, было указано, что одним из способов достижения паттерна является написание класса Memento
внутри класса Originator
, чтобы только Originator
может иметь доступ к закрытым членам класса Memento
. Когда я попытался применить этот метод, я получил ошибку, сообщающую, что приватный член недоступен. Я знаю, что могу использовать ключевое слово friend
, и это даст мне доступ к частным пользователям. Также я знаю, что могу получить доступ к закрытым членам внешнего класса из внутреннего класса. Но почему внутренний класс не может получить доступ к закрытым членам внутреннего класса?
Я могу сделать это в java, например:
public class X {
int Xi;
public class Y
{
private int Yi;
public void func()
{
X x = new X();
x.Xi = 5;
}
}
public void func()
{
Y y = new Y();
y.Yi = 5;
}
}
Почему это невозможно в C ++