这是一个关于将类定义为公共或私有的问题。
现在,我在命名空间内定义了各种类,我只希望其中一些类对外界可见/可用。
因此,例如,如果下面的类是程序中唯一的类,我希望 main.cpp 只能看到/使用 MyPublic 类,而不是 MyPrivate 类。我认为将 MyPrivate 类定义为 private 并将 MyPublic 类定义为 public 可以实现这一点,但是下面的代码有效并且 main.cpp 能够声明一个 MyPrivate 对象。
是否可以在 C++ 中做到这一点?
我的私人.h:
namespace MyNamespace{
// only classes inside of the MyNamespace should be able
// to use this
private ref class MyPrivate{
...
};
}
MyPublic.h:
#include "MyPrivate.h"
namespace MyNamespace {
// anyone can declare this
public ref class MyPublic{
...
private:
MyNamespace::MyPrivate^ p;
...
};
}
主要.cpp:
#include "MyPublic.h"
int main(){
MyNamespace::MyPublic p_yes; // this is fine
MyNamespace::MyPrivate p_no; // don't want this to be possible
return 0;
}