У меня есть некоторые встроенные функции, содержащиеся в пространстве имен в файле заголовка, и в настоящее время я не могу их переместить в файл cpp. Некоторые из этих встроенных функций использовать магические константы, например:Скрытие частных констант в встроенном заголовке пространства имен
// Foo.h
namespace Foo
{
const int BAR = 1234;
inline void someFunc()
{
// Do something with BAR
}
}
Однако, я хочу, чтобы эти магические константы частными - любые идеи, как? Моя первая мысль была использовать анонимное пространство имен таким образом:
// Foo.h
namespace Foo
{
namespace
{
// 'private' constants here
const int BAR = 1234;
}
inline void someFunc()
{
// Do something with BAR
}
}
Однако, это не работает и Foo::BAR
доступна для любого файла CPP, который включает в себя Foo.h
? Есть ли способ сделать это без создания файла cpp реализации?
Это также использование форсирования конвенции. Он работает хорошо, пока вы говорите всем простым: «Никогда не вводите пространство имен деталей», что в большинстве случаев не сделало бы этого. – GManNickG