異なるデータ型(構造体)を含むバイナリファイルをソートするためにQuicksortをコーディングしています。これは私がこれまでに書いたものです:関数でtypedefを使用するには?
void quicksort(){
int izbor;
char naziv_datoteke[20];
cout << "Izaberite datoteku koju zelite sortirati: "<<endl;
cout << "1 - sifra.ind "<<endl;
cout << "2 - ime.ind "<<endl;
cout << "3 - prezime.ind "<<endl;
cin >>izbor;
switch(izbor){
case 1:strcpy(naziv_datoteke, "sifra.ind");
typedef tsifra slog;
break;
case 2:strcpy(naziv_datoteke, "ime.ind");
typedef time slog;
break;
case 3:strcpy(naziv_datoteke, "prezime.ind");
typedef tprezime slog;
break;
}
int broj_zapisa;
dat.open(naziv_datoteke, ios::in|ios::out|ios::binary);
dat.seekg(0, ios::end);
broj_zapisa=dat.tellg()/sizeof(slog);
// quicksort(0, broj_zapisa-1);
dat.close();
}
私はこのエラーを取得しています:
conflicting declaration 'typedef struct time slog'
私は私が取得するために、後でそれを使用できるようにファイルに格納されたデータ型として強打を定義したいと思いますその構造体のサイズとそれ以外のものはほとんどありません。
このようにC++は機能しません。 'typedef'はスコープが定義で始まるエイリアスを定義し、エイリアスを囲みスコープの終わりまで続けます。あなたはtypedefを "再定義"することはできません。それは、その時点から有効になる実行可能なステートメントのようなものではありません。テンプレート、継承、またはその他のさまざまなデザインパターンを使用して、実行しようとしていることの基本的な考え方を達成するさまざまな方法があります。あなたの状況に最も適したものを決定するために、これらのトピックに関するすべてのことを学ぶためにC++の本を読んだりすることをお勧めします。 –
^それで、スイッチの後にスローグで達成したいことを示してください。 –