У меня есть некоторые встроенные функции, содержащиеся в пространстве имен в файле заголовка, и я в настоящее время не в состоянии переместить их в файл 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 реализации?