¿Cómo hago principal amigo de mi clase desde una biblioteca?

Por favor mirami primer intento de responder esta. Me olvidé de contar toda la historia antes en un intento de simplificar las cosas. Resulta que mi ejemplo funciona! Lo siento

La historia completa es que esta es una biblioteca que contiene una clase en un archivo y la principal en otro archivo, todos vinculados a mi biblioteca. La biblioteca proporciona la base para un Marco de procesos, por lo que el principal está en la biblioteca y no en el proceso.

Abajo es una versión reducida de lo que tengo.

pf.hpp

using namespace std;

namespace MyNamespace
{
  class ProcessManager
  {
  public:
    friend int main(int argc, char** argv);
  private:
    void test();
  };
};

pf.cpp

#include "pf.h"

namespace MyNamespace
{
  ProcessManager::test()
  {
    cout << "My friend has accessed my member" << endl;
  }
};

pfmain.cpp

#include "pf.hpp"

int main(int argc, char** argv)
{
   ProcessManager pm;

   pm.test();
}

enga en cuenta que esto falla en la compilación de la biblioteca

Lo que he intentado es:

Mover al amigo por todo el lugar Haciendo la referencia de amigo al alcance global del uso principal (por ejemplo, :: main) Hacer amigos y las declaraciones principales usan alcance global

¿Qué me estoy perdiendo

¡Gracias

Respuestas a la pregunta(8)

Su respuesta a la pregunta