У меня есть класс, который содержит статический член, карту строк для указателей на функции.Эта карта предназначена для однократного заполнения статическим набором сопоставлений и впоследствии не будет изменена.
Мой вопрос: как я могу убедиться, что к карте нет доступа до ее инициализации?Мой код в настоящее время выглядит примерно так:
class MyClass
{
static MapType s_myMap;
public:
static const MapType& getTheMap()
{
if (s_myMap.empty())
{
// Populate the map
}
return s_myMap;
}
};
, который отлично работает для внешних клиентов MyClass
, но не мешает внутренним членам класса напрямую обращаться к карте private
до ее инициализации.
Чтобы решить эту проблему, я думаю сделать карту локальной для метода получения:
class MyClass
{
public:
static const MapType& getTheMap()
{
static MapType s_myMap;
if (s_myMap.empty())
{
// Populate the map
}
return s_myMap;
}
};
Это хорошая идея, или есть лучший способ добиться этого?