私はプロジェクトに取り掛かりました。という名前の問題に来ました。別の名前空間に同じクラス名がある場合、どうすればよいですか?
私はファクトリパターンを実装したいと思いますが、使用するクラス名がわかりません(私はもう一方のクラスに変更しています。それはかなり時間がかかります)。
私は通常グループクラスのを分離するために、名前空間のために行くが、私の問題は、このコードの特定の部分である:
class Mesh
{
...
};
namespace Factory
{
class Mesh
{
...
};
}
...
Factory::Mesh meshFactory;
Mesh *mesh = meshFactory.create(...);
マイ問題は、私は、この構造を使用する場合、私はできることですMeshクラス(ファクトリクラスでも実際のMeshクラスでも)を混在させます。実際、これは単純化されています。私の問題にはいくつかの名前空間があり、同じ名前のクラスが両方の名前空間で使用されています。
私は多分クラスを分離し、例えば、同じ名前空間にそれらを置くために接尾辞を使用して考えていた:
class Mesh
{
...
};
class MeshFactory
{
...
};
MeshFactory meshFactory;
Mesh *mesh = meshFactory.create(...);
ので、各クラスが何をするかには混乱がありません。
私は名前空間名を使用して終了になるので、私はそれらを区別するか、別の名前空間を使用して別の名前を発明することでシンプルなソリューションを好きではない:
class Mesh
{
...
};
namespace Factory
{
class MeshFactory // I can't figure a better different name
{
...
};
}
私は2番目のオプションを好みます。
最初のオプションが優れている理由は何ですか?それとも別の方法がありますか?これに関してベストプラクティスは何を言いますか?