Прежде всего ... что значит элегантный?Меньше кода для вас, чтобы написать?Я предлагаю вам не идти на компромисс, когда дело доходит до читабельности.
Использование дружбы не должно быть простым решением.На SO есть множество потоков, которые занимаются этим, но здесь я просто предполагаю, что вы уже знаете, что это означает.
Вариант 1) гораздо более читабелен.Когда кто-то видит класс, он сразу узнает, кто имеет к нему доступ.Код должен быть выразительным, и эта опция идеально описывает намерение.
Вариант 2) немного излишним.Вы пишете обертку только для того, чтобы вы могли получить доступ к некоторым функциям ... почему бы не сделать их public
для начала, поскольку обертка имеет публичный доступ.Это просто дополнительный уровень абстракции для ничего.
Сначала вы должны подумать о функциональности (обе работы), выразительности и читабельности (вариант 1 здесь определенно лучше).