Это вопрос о том, что делает определение класса как публичного или частного.
В данный момент у меня есть различные классы, определенные внутри пространства имен, и я хочу, чтобы некоторые из этих классов были видимыми / использованными во внешнем мире.
Так, например, если бы нижеуказанные классы были единственными в программе, я бы хотел, чтобы main.cpp мог видеть / использовать только класс MyPublic, а не класс MyPrivate. Я думал, что определение класса MyPrivate как частного и класса MyPublic как открытого позволит это сделать, но приведенный ниже код работает, и main.cpp может объявить объект MyPrivate.
Возможно ли это сделать в C ++?
MyPrivate.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;
...
};
}
main.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;
}