これは、クラスをパブリックまたはプライベートとして定義することについての質問です。名前空間のプライベート/パブリッククラスの問題
今、私は名前空間の内部で定義されたさまざまなクラスを持っています。私はこれらのクラスのうちのうちを外界に見えるようにしたいだけです。
たとえば、以下のクラスがプログラム内の唯一のクラスである場合、私はmain.cppがMyPrivateクラスではなくMyPublicクラスのみを参照/使用できるようにしたいと思います。 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;
}
これはドットネットの「managed C++」です。「C++」ではありません。 – ChrisW
C++、またはC++/CLIを使用していますか? – Thanatos
私は管理されていないC++のように、パブリック/プライベートクラスのようなものはないので、質問にタグを付け直しました。 –