Consulte my first attempt at answering this . Me olvidé de contar toda la historia antes en un intento de simplificar las cosas. ¡Resulta que mi ejemplo funciona! Lo siento.¿Cómo hago de main un amigo de mi clase desde dentro de una biblioteca?
Toda la historia es que esta es una biblioteca que contiene una clase en un archivo y la principal en otro archivo, todo enlazado 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.
A continuación se muestra 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();
}
Tenga en cuenta que esto no funciona en la compilación de la biblioteca
Lo que lo he intentado es:
- Mover el amigo por todo el lugar
- de remisión amigo para uso principal ámbito global (por ejemplo, :: principales) amigo
- decisiones y declaraciones principales utilizan ámbito global
¿Qué me falta?
Gracias!
Esto es un poco fuera de tema, pero mucha gente diría que la palabra clave 'friend' nunca es una buena solución. – asveikau
No es lo ideal, estoy de acuerdo, pero a veces no tiene otra alternativa buena – Jaime
Puede que desee considerar otras variantes de 'main()'. Sin embargo, no estoy seguro de si están en Facebook. –