2012-03-06 10 views
-1

これは私が暗闇の中でショットを取るつもりですそれをCにcppのコードを変更する(構造体型)

+1

このコードはC++としてコンパイルされません。最小限の作業コードの例を提供し、質問をしなければなりません。 –

+1

最後の行を 'struct edge * a = malloc(sizeof(* a)* 9)'に変更するだけです。 –

+0

達成したいことは明確ではありません。 'struct edge'の9つのインスタンスを作成しますか?また、CPPはC PreProcessorを意味しますが、C++はまったく別のことです。 – DarkDust

答えて

6
typedef struct 
{ 
    char key; 
    char values[5]; 
} edge ; 

edge *a = malloc(9 * sizeof(edge)) ; 

純粋そのコードをすることについて助けてもらえ実際には動的メモリ割り当てはまったく必要ないと仮定します。その場合には、Cバージョンは次のとおりです。

struct edge 
{ 
    char key; 
    char values[5]; 
}; 

struct edge a[9]; 

は、C++では、あなたがオブジェクトを作成するnewを必要としない、覚えておいてくださいあなたは動的する場合は、あなただけのnewを必要とするオブジェクトを作成します。

私の推測が正しい場合、上記はあなたのために完全に動作します。私の推測が間違っている場合は、次のような行のプログラムでエラーが発生します。

a = foo; 
+0

'Initalizer要素が一定ではありません。'のようなエラーが表示されます。 – Rckt

+1

@Rckt:あなたはグローバルスコープ(静的な記憶期間を持つ)で 'edge * a 'を宣言しており、定数、すなわち' 1'や '' hello''などでのみ初期化できます(これは別のCの奇妙な)。 –

+0

どのコンパイラを使用していますか? – rrr105

0

を行う必要がありますC.

struct edge 
{ 
    char key; 
    char values[5]; 
}; 

edge* a = new edge[9]; 
関連する問題