Что такое Java пакетный пакет в C ++? - PullRequest
1 голос
/ 19 июня 2019

Что такое Java-пакет "private private" в C ++? Функция обеспечения конфиденциальности пакета Java (когда видимость доступны только в классах одного пакета) полезна при предоставлении API.

есть ли подобная функция для C ++ (кроме объявления других классов как "друзей")? уточнять больше, например предположим, что A.h и B.h находятся в одном пакете (то есть API lib) Файл: A.h

class A
{
public :
void doA();

private : 
 int m_valueA;
};

Файл: B.h

class B
{
public : 
void doB()

private:
int m_valueB;

}

То, что я хочу, это

публичная видимость: ТОЛЬКО A :: doA () и B :: doB ()

в пакете (т.е. API lib): A должен иметь доступ к B :: m_valueB, а B должен иметь доступ к A :: m_valueA. БЕЗ превращения друг друга в «друг» классы.

1 Ответ

1 голос
/ 19 июня 2019

C ++ не имеет пакетов, как в Java.Но у него есть пространства имен, хотя пространства имен - это просто namespace.Так что это другой зверь.

В некоторых ситуациях эмуляция может быть внутренними классами (классами внутри других классов) - поскольку внутренние классы считаются членами.

Кроме того, есть заголовокфайлы и реализация (файлы .cpp) - в этом смысле у вас есть модули или модули, которые контролируют то, что реально видно (не только частное, но и полностью скрытое - в частности, , если помещено в anon. namespace).Эта концепция охватывает как один файл .h, так и файл .cpp или целые проекты / libs / dlls, которые больше похожи на полный пакет (и могут выбирать, какие части API они предоставляют через то, что «показано» в их соответствующих заголовочных файлах).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...