У меня есть несколько классов. Один класс должен быть видимым для любого, кто ему нужен, а остальные - вспомогательные классы (ну, некоторые из них являются структурами), которые должны быть доступны только для основного класса. Первоначально я реализовал это как вложенный класс внутри основного класса, но это начало заставлять файл заголовка громоздким, поскольку я добавил дополнительные вспомогательные классы. Итак, теперь я помещал вспомогательные классы в отдельное пространство имен с запрещающим видом имени, но я подозреваю, что есть лучший способ. Я хотел бы использовать анонимное пространство имен, но я не могу взять классы-помощники из заголовка, потому что они отображаются как переменные-члены в основном классе.Как я должен скрывать классы-помощники от остального мира?
Вот упрощенный вариант построения, которая находится в моем файле заголовка теперь минус включают охранников:
namespace __TopSecretVisibleNamespace {
class Invisible{
};
}
using namespace __TopSecretVisibleNamespace;
class Visible {
public:
Visible();
private:
Invisible sneaky;
};
Любые мысли?
Обычное соглашение - это пространство имен 'detail'. '__T ...' зарезервирован для реализации (как и любое имя с двойным подчеркиванием * или * ведущее подчеркивание, за которым следует заглавная буква). –
Yup, 'detail'. И не делайте «использование деталей пространства имен», это как бы поражает точку. –
Jerry-Что вы подразумеваете под «зарезервированы для реализации?» Я не могу реализовать классы в другом пространстве имен, чем объявить их, не так ли? Cat - О, спасибо, я думал, что оператор using не выходил за пределы файла заголовка. –