Доступ к закрытым элементам объекта того же класса
Это законно? Если нет, то разрешит ли это следующий код?
class Foo
{
friend class Foo;
}
4 ответа
Решение
Это избыточно. Foo уже имеет доступ ко всем членам Foo. Два объекта Foo могут получить доступ к членам друг друга.
class Foo {
public:
int touchOtherParts(const Foo &foo) {return foo.privateparts;}
private:
int privateparts;
};
Foo a,b;
b.touchOtherParts(a);
Приведенный выше код будет работать просто отлично. B будет иметь доступ к личным данным члена.
Да, это законно для объекта класса Foo
чтобы получить доступ к закрытым членам другого объекта класса Foo
, Это часто необходимо для таких вещей, как создание и назначение копий, и не требуется никакого специального объявления друга.
Это излишне и ненужно. Более того, я получаю следующее предупреждение в g++
warning: class ‘Foo’ is implicitly friends with itself
Классы фридинга сами по себе имеют смысл, если они являются шаблонами, поскольку каждый экземпляр с различными параметрами - это отдельный класс.