Как мне сделать main другом моего класса из библиотеки?

См. мою первую попытку ответить на этот вопрос . Раньше я не рассказывал всю историю, пытаясь упростить ситуацию. Оказывается, мой пример работает! Извините.

Вся история в том, что это библиотека, которая содержит класс в одном файле и основной в другом файле, и все они связаны с моей библиотекой. Библиотека обеспечивает основу для Process Framework, поэтому главное находится в библиотеке, а не в процессе.

Ниже представлена ​​урезанная версия того, что у меня есть.

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();
}

Обратите внимание, что это не удается при компиляции библиотеки.

Я пробовал следующее:

  • Перемещение друга повсюду
  • Создание ссылки друга на глобальную область видимости main (например, :: main)
  • Создание в объявлениях friend и main глобальная область видимости

Что мне не хватает?

Спасибо!

9
задан Community 23 May 2017 в 01:59
поделиться