C++ 中的 java "package private" 等价物是什么?
What is the java "package private" equivalent in C++?
C++ 中的 java "package private" 等价物是什么?
Java 包隐私功能(在同一包中只有 类 可见)在提供 API 时很有用。
C++ 是否有类似的功能(除了将其他 类 声明为 "friend"s 之外)?
详细说明,
例如假设 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;
}
我要的是,
public 可见性:仅 A::doA() 和 B::doB()
包内(即 API lib):A 应该能够访问 B::m_valueB,B 应该能够访问 A::m_valueA。
没有让彼此 "friend" 类.
c++ 没有 java 中的包。但它确实有命名空间,但命名空间就是一个 namespace
。所以这是一个不同的野兽。
某种程度上的模拟在某些情况下可能是内部 类(类 在其他 类 中)- 因为内部 类 被视为成员。
除此之外,还有头文件和实现(.cpp 文件)——从这个意义上说,你有单元或模块来控制实际可见的内容(不仅是私有的,而且是完全隐藏的——特别是如果放入匿名。namespace
)。这个概念涵盖了单个 .h 文件和 .cpp 文件或整个 projects/libs/dlls 更像是一个完整的包(并且可以选择 API 的哪些部分通过获取 'shown'在各自的头文件中)。
C++ 中的 java "package private" 等价物是什么? Java 包隐私功能(在同一包中只有 类 可见)在提供 API 时很有用。
C++ 是否有类似的功能(除了将其他 类 声明为 "friend"s 之外)? 详细说明, 例如假设 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;
}
我要的是,
public 可见性:仅 A::doA() 和 B::doB()
包内(即 API lib):A 应该能够访问 B::m_valueB,B 应该能够访问 A::m_valueA。 没有让彼此 "friend" 类.
c++ 没有 java 中的包。但它确实有命名空间,但命名空间就是一个 namespace
。所以这是一个不同的野兽。
某种程度上的模拟在某些情况下可能是内部 类(类 在其他 类 中)- 因为内部 类 被视为成员。
除此之外,还有头文件和实现(.cpp 文件)——从这个意义上说,你有单元或模块来控制实际可见的内容(不仅是私有的,而且是完全隐藏的——特别是如果放入匿名。namespace
)。这个概念涵盖了单个 .h 文件和 .cpp 文件或整个 projects/libs/dlls 更像是一个完整的包(并且可以选择 API 的哪些部分通过获取 'shown'在各自的头文件中)。