2009-04-30 15 views
0

名前空間の配列を作成するにはどうすればよいですか?そして、それは長い間のように思えるので、これが不可能な場合は、配列にできる名前空間に似た何かがありますか?名前空間の配列を作成するにはどうすればよいですか?

名前空間、それが助け場合は、これらの変数が含まれています

const int maxx=// depends on the particular namespace 
       // I need an array to go through each namespace and 
       // pick out the variable 
const int maxy=// depends on particular namespace 
//prgm is a class I made 
prgm sector[maxx][maxy]; 
// another array of prgms. int is my shorthand of saying "depends on 
// particular namespace", so is char. 
prgm programs[int]={prgm1(int,int,char),prgm2(int,int,char)... 

だから、任意のヘルプは歓迎されるであろう。

+0

あなたはどのような言語について話していますか? – Eddie

答えて

0

あなたが話している言語はよく分かりませんが、多くの(ほとんどの)言語では、定数への参照はコンパイル時に定数に置き換えられます。したがって、それらは実行時にもはや存在せず、リフレクションでさえ助けにならない。

(静的な)プロパティとして定数を公開するクラスを各名前空間に作成できます。次に、リフレクションを使用して各名前空間のクラスを検索し、プロパティから定数値を取得できます。

しかし、他の人に言われているように、あなたは本当にあなたのデザインを考え直すべきです。最後に、ネームスペースは、通常、含まれるクラス(およびその他のもの)のクラス名を拡張するだけなので、リフレクションによってアクセス可能ではありません。または、名前空間をリフレクションによってエンティティとして公開する(非難解な)言語がありますか?

.NETの場合、System.Type.Namespace propertyの参照は次のように述べています。

名前空間はアプリケーションスコープを定義し、単一の階層構造のクラス及び他のタイプを編成するために主に使用される論理設計時命名便宜、です。 ランタイムの観点からは、名前空間はありません。

+0

助けてくれてありがとう。私は私のデザインを考え直すというアイデアに最も合意した通りに行くだろうと思う:)。 –

+0

@ Keand64:それから私に+15を与える!今すぐ! (冗談) – Kredns

2

リフレクションを使用することもできますが、デザインを再考する必要があります。

0

これはC++ですか?ネームスペースではなくクラスを定義し、次にそのクラスのインスタンス(オブジェクト)を作成し、をという配列に配置する必要があるように思えます。

したがって、変数maxxmaxyの値に基づいて、クラスのコンストラクターに渡されるサイズに基づいているため、sector変数が扱いにくくなります。代わりにcontainer classまたはdynamically-allocated multi-dimensional arrayを使用して、この問題を解決できます。

0

C++については、名前空間をエンティティとして渡すことはできません。しかし、テンプレートの型引数として型を使用することができます。この場合、MPL sequenceMPL algorithmsと一緒に助けることができる:

struct c1 { typedef int_<2> value_x; }; 
struct c2 { typedef int_<3> value_x; }; 
struct c3 { typedef int_<1> value_x; }; 
template<typename C> struct get_x : C::value_x { }; 

typedef vector<c1, c2, c3> scope_vec; 

typedef max_element< 
    transform_view< scope_vec , get_x<_1> > 
    >::type iter; 

あなたは、その種類、ベクター内の検索は、コンパイル時に起こること

prgm programs[deref<iter>::type::value]; 

ノートのようなあなたの配列を作成することができます。したがって、配列の値はコンパイル時にも決定されます。

関連する問題