Я, наверное, усложняю. Но у меня есть библиотека, которую я делаю. Он будет состоять из двух частей: внешних вещей, с которыми может играть любой, и внутренних вещей. Я намерен, чтобы внутренние вещи оставались относительно незаметными, чтобы попытаться сохранить интерфейс в чистоте, о котором легко рассуждать. Итак, вот что я делаю (скажите, безумие это или нет).
Для внешних вещей у меня есть библиотека, а затем все, что должно быть представлено как «часть» этой библиотеки. Для внутренних вещей у меня есть отдельная библиотека «my_library_internal», в которой все классы есть как часть класса внутренней библиотеки.
Где все становится странно. Внутренняя библиотека импортирует внешнюю библиотеку во все методы внутренней библиотеки для использования объектов внешней библиотеки. В конечном итоге это приводит к предупреждениям от компилятора (хотя, похоже, компилируется нормально).
Это идиоматический способ сделать это или я должен просто сделать все, что связано с этой библиотекой, внутренней или внешней, ее частью и не беспокоиться о раскрытии внутренностей.