sajty/ember — comment on commit bdf80d1bece1cc5512eebeb41a6e962b5c3b2557
File: src/services/input/Input.cpp line 189
By erikhjortsberg:

But the Ogre coding standards are different from the Ember coding standards, so we shouldn't use them as reference. So, this is a good case of something which fits Ogre good, but not Ember.

The main difference is that Ogre is a library, meant to be used by external stuff, whereas Ember is self contained.
For self contained components the "friend" keyword is excellent. It does not break encapsulation and it provides a language build in mechanism for allowing for collaboration between classes. It is very much preferred in place of the Ogre solution, since it allows for a greater control of exactly what classes are allowed extra access.

However, for a library such as Ogre it's lousy. This is because with Ogre you can cannot know the name of the classes which will want to get extra access. There are tons of external apps and components which uses these low level Ogre methods to advanced stuff (we do it ourselves in Ember in many places), and the "friend" keyword would simply not work.

So, for an app like Ember the "friend" keyword is best. For a library like Ogre the "_" prefix notation is best.
However, I don't really remember why these methods were made private and exposed through "friend". There probably existed a good reason, but not any longer. I.e. I don't see why these should be private.
Better to remove the "friend" keyword and move them to the public part (as you've done) and then also remove the "_"-prefix. I.e. just make them normal public methods.