2010-12-05 3 views
0

に変換するポインタのために、次のコードをC++からc#に変換する際に問題があります。 いくつかのC++配列コードをc#

は基本的に私は、これはいくつかのdouble配列であった場合

STATE** State; 
States = new STATE* [max_states]; 

for (int i=0; i < max_states; i++) { 
    States[i] = new STATE(max_symbols); 
} 

は私が

STATE[][] States; 
States = new STATE[max_states][]; 

for (int i = 0; i '<' max_states; i++) { 
    States[i] = new STATE[max_symbols]; 
} 

だと思いましたが、問題は、私はそれが予想される「として、」C++のコードが動作していないです。

States[i] = new STATE(max_symbols); 

は、例えば、私が何を見ていない正確にしています

States[cur_state]->set_recur_out(k); 

ことができますことを、いくつかの奇妙な行動をしていますか?これは初心者のC++の質問かもしれません。申し訳ありませんが、私はそれは、2Dアレイではなく、単一の要素へのポインタを含む1Dアレイ...
new STATE(max_symbols)は、コンストラクタを呼び出す、単一の状態オブジェクトを作成

答えて

3

)=まったく意味をなさない場合これは単一の引数(この場合はmax_symbols)をとります。

私はC#の多くの手掛かりを持っていけないが、次はC#でのC++コードを正しく表現する必要があります:

STATE[] States; 
States = new STATE[max_states]; 

for (int i = 0; i '<' max_states; i++) { 
    States[i] = new STATE(max_symbols); 
} 
+0

私の問題を解決していただきありがとうございます – foobar

1

これは単にポインタの配列です。 1次元配列になりますC#の場合:

STATE[] States = new STATE[max_states]; 

for (int i = 0; i < max_states; i++) { 
    States[i] = new STATE(max_symbols); 
} 

あなたがC++で見ている「奇妙な行動は」単純型へのポインタのメンバにアクセスするC++の方法です:

Type* x; 
x->y(); 
// is the same as: 
(*x).y(); 
// and corresponds to: 
Type z; 
z.y(); 
関連する問題