Я пишу некоторые функции C++, которые будут генерировать данные, которые могут или не могут быть обработаны позже этими функциями (но не будут обрабатываться нигде). Эти функции являются «низкоуровневыми» для некоторых изменений более высокого уровня, графического интерфейса.Инкапсулирование данных за пределами класса
В настоящее время я обертываю эти функции в отдельном пространстве имен и объявил статический (внутренне связанный) вектор, чтобы содержать эти объекты внутри вектора (объекты определены как структура, также содержащаяся в пространстве имен). Таким образом, общая структура:
namespace Foo
{
struct Bar
{
string data;
};
void func1();
void func2();
static std::vector<Bar> cachedBars;
}
Я действительно не нужен класс для этого, и я не заинтересован в прибегая к одноплодной. Достаточно ли этого решения? В частности, внутренняя связь коллекции пространства имен - лучший способ ограничить доступ к этой коллекции, а также избежать всех ошибок глобальных переменных или есть лучший способ?
Это не избегает любых подводных камней глобального, что с ним является глобальным и всеми. –
Это заголовочный файл? Если это так, вы получите отдельную копию cachedBars везде, где вы включили файл. –
@ Кат: Я надеялся, что это было, по крайней мере, глобально. –