Il s'agit d'une question sur ce que définit une classe publique ou privée.classe privée/publique dans le problème d'espace de noms
À l'heure actuelle, j'ai différentes classes définies à l'intérieur d'un espace de noms et je veux seulement certains de ces classes pour être visible/utilisable pour le monde extérieur. Donc, par exemple, si les classes ci-dessous étaient les seules dans le programme, je voudrais que main.cpp soit seulement capable de voir/utiliser la classe MyPublic, pas la classe MyPrivate. Je pensais que définir la classe MyPrivate comme privé et la classe MyPublic comme public accomplirait cela, mais le code ci-dessous fonctionne et main.cpp est capable de déclarer un objet MyPrivate.
Est-il possible de faire cela en 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;
}
C'est le "C++ géré" de dot net: ce n'est pas "C++". – ChrisW
Utilisez-vous C++ ou C++/CLI? – Thanatos
J'ai repensé la question, car dans le C++ non-géré, il n'y a pas de classe publique/privée. –