Класс, к внутренним данным которого вы хотите получить доступ, должен объявлять другие классы друзьями, поскольку это нарушает стандартную инкапсуляцию.
Невозможно, чтобы std :: make_shared сделал ваш класс другом, и, есливы не меняете std :: make_shared, он не должен хотеть, чтобы ваш класс был другом.
Так что, если я не правильно понял вопрос - то, что вы спрашиваете, не может быть сделано.