2012-03-11 13 views
0

私はradixsortを使用して数値のリストをソートしようとしています。しかし、コンパイラ 問題を複数回試しても解決できない問題に遭遇しました。ソート番号コンパイラエラー

私は2つのポインタをリストの後ろに、もう1つを手前に持っています。 baseはradixsortに使用しているバケットの数です。私は取得しています

struct listnode **front,**back; 
front = malloc(sizeof(*front) * base); 
back = malloc(sizeof(*back) * base); 

エラーは次のとおりです。助けを事前に

invalid conversion from void* to listnode**[-fpermissive] 

感謝。

+0

次回にコードをフォーマットしてください。 –

+0

あなたはC++を使っているようですが、C言語としてタグ付けしました。あなたはどの言語を使っていますか? – Marlon

+0

@Marlon私はcmdでg ++を使用しています – exlux15

答えて

4

CプログラムをコンパイルするためにC++コンパイラを使用しているようです。どちらかをしないでください、またはmalloc()コールの戻り値に型キャストを追加してください。

+0

私はg ++をWindowsの下で使っています。 mallocの型キャストはどうすればできますか? – exlux15

+1

あなたの場合、 'front =(listnode **)malloc(sizeof ....)'。しかし、なぜC++コンパイラを使いたいのですか? –

+0

私のプログラムはgccまたはg ++コンパイラで動作させる必要があります。私はあなたの提案を試して、それは動作します。ありがとう。 – exlux15

0

コードはCプログラムとして正常に動作します。それでも

に...それをコンパイルし、次に.cの拡張子を持つファイルを保存し、あなたがC++プログラムとしてコンパイルしたい場合、あなたは

struct listnode **front,**back; 
    front = static_cast<listnode**> (malloc(sizeof(*front) * base)); 
    back = static_cast<listnode**> (malloc(sizeof(*back) * base)); 

としてキャストを行う必要がある理由はということですC++は強く型付けされた言語であり、Cのようなポインタ間の変換の種類は許されません。このようなキャストをC++で明示的に指定する必要があります。ポインタ間の暗黙のキャストは、ハード・バグの原因であり、C++ではサポートされていません。

関連する問題