예를들어 인터페이스 클래스NodeInterface의 함수들이 클래스 Node의 private 멤버에 접근할필요가 있는데 Node클래스안에 NodeInterface를 프렌드로두는방법이 많이 쓰이나요?

한가지 대안은 Node클래스를 아예 struct로 만들고NodeInterface의 멤버함수들의 파라미터에 struct Node* 형을 추가하여 사용자가 오직 NodeInterface로만 struct Node에 접근하도록 만드는건데 이러면 struct Node의 멤버는 접근권한이 public이 되어버려서 별로인가요?(사실 public이어서 오직 NodeInterface로만 struct Node에 접근한다는말은 틀린거겠지만 사용자레벨에서 규칙으로의 의미로 말한것임)