Patrz: my first attempt at answering this . Zaniedbałem opowiadanie całej historii wcześniej, próbując uprościć rzeczy. Okazuje się, że mój przykład działa! Przepraszam.Jak ustawić głównego przyjaciela mojej klasy z poziomu biblioteki?
Cała historia jest taka, że jest to biblioteka zawierająca klasę w jednym pliku i główną w innym pliku, wszystkie połączone z moją biblioteką. Biblioteka stanowi podstawę dla Proces Framework, dlatego głównym jest w bibliotece, a nie proces.
Poniżej znajduje się obnażona wersja tego, co mam.
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();
}
Zauważ, że to się nie powiedzie na kompilacji biblioteki
Co ja próbowałem to:
- Przesuwanie znajomego wszędzie
- odsyłającego przyjaciela do zasięgu globalnym głównym zastosowaniem (np :: główne) Przyjaciel
- Making a główne deklaracje użyć zasięgu globalnym
Czego mi brakuje?
Dzięki!
To trochę nietypowy temat, ale wiele osób powiedziałoby, że słowo kluczowe "przyjaciel" nigdy nie jest dobrym rozwiązaniem. – asveikau
To nie jest idealne Zgadzam się, ale czasami nie masz innej dobrej alternatywy. – Jaime
Może chciałbym rozważyć inne przyjazne dla siebie warianty 'main()'. Nie jestem pewien, czy są na Facebooku. –