Como faço para tornar principal um amigo da minha classe dentro de uma biblioteca?
Por favor, vejamy primeira tentativa de responder a esta. Esqueci de contar a história toda antes, numa tentativa de simplificar as coisas. Acontece que o meu exemplo funciona! Desculpe
A história toda é que essa é uma biblioteca que contém uma classe em um arquivo e a principal em outro arquivo, todos vinculados à minha biblioteca. A biblioteca está fornecendo a base para um Process Framework, e é por isso que o principal está na biblioteca e não no process
Abaixo é uma versão simplificada do que tenho.
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();
}
Observe que isso falha na compilação da biblioteca
O que eu tentei é:
Movendo o amigo em todo o lugarFazer a referência de amigo ao escopo global de uso principal (por exemplo, :: main)Fazer declarações de amigos e principais usar o escopo globalO que estou perdendo
Obrigado