Как сделать доступным большое количество существующих функций в рамках класса? - PullRequest
5 голосов
/ 13 июля 2011

Мне нужно превратить большой (из сотен исходных файлов) проект в библиотеку, удалив десятки глобальных переменных, поместив их всех в объект класса.

Проблема в том, что тысячи или около того функций, которые сейчасдолжны быть членами этого class, чтобы они имели доступ к объектным переменным.

Otehr, чем добавление MyClass:: к каждому определению функции в исходных файлах, есть ли способ обмануть и указать, что всефункции в определенном исходном файле должны быть частью области видимости MyClass?

1 Ответ

6 голосов
/ 13 июля 2011

Добавьте все глобалы к namespace.

// MyGlobals.h
namespace MyGlobals
{
  extern int g_i;
  extern double g_d;
  extern A g_A;
}

К любым файлам, к которым вы хотите получить доступ, выполните:

using namespace MyGlobals;

внутри заголовочного файла. Таким образом (using namespace) вы можете указать, что все переменные должны быть доступны без использования разрешения области действия :: для этого файла. (то есть вы можете просто получить доступ к g_i вместо MyGlobals::g_i внутри этого файла).

Также обратите внимание, что вы должны определить все глобальные переменные в файле .cpp:

// MyGlobals.cpp
#include "MyGlobals.h"

int MyGlobals::g_i;
double MyGlobals::g_d;
A MyGlobals::g_A;
...