Ich habe einige Inline-Funktionen in einem Namespace in einer Header-Datei enthalten und bin derzeit nicht in der Lage, sie in eine cpp-Datei zu verschieben. Einige dieser Inline-Funktionen verwenden magische Konstanten, zum Beispiel:Private Konstanten in einem Inline-Namespace-Header ausblenden
Allerdings möchte ich diese magische Konstanten privat machen - irgendwelche Ideen wie? Mein erster Gedanke war also eine anonyme Namespace zu verwenden:
// Foo.h
namespace Foo
{
namespace
{
// 'private' constants here
const int BAR = 1234;
}
inline void someFunc()
{
// Do something with BAR
}
}
Dies ist jedoch nicht funktioniert und Foo::BAR
ist verfügbar auf jede CPP-Datei, die Foo.h
enthält? Gibt es eine Möglichkeit, dies zu tun, ohne eine cpp-Datei für die Implementierung zu erstellen?
Dies ist auch die Konvention Boost verwendet. Es funktioniert gut, solange Sie jedem das einfache "Niemals einen Detail-Namespace eingeben" sagen, was die meisten ohnehin nicht tun würden. – GManNickG