【发布时间】:2017-11-24 16:39:10
【问题描述】:
我正在编写 Quicksort 以对包含不同数据类型(结构)的二进制文件进行排序。这是我到目前为止写的:
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();
}
我收到此错误:
冲突声明'typedef struct time slog'
我想将 slog 定义为存储在文件中的数据类型,以便以后可以使用它来获取该结构的大小和其他一些东西。
【问题讨论】:
-
C++ 不能以这种方式工作。
typedef定义了一个别名,其范围从定义开始,一直持续到其封闭范围的末尾。您不会“重新定义” typedef,而且它不是某种从那时起生效的可执行语句。使用模板、继承或各种其他设计模式,有许多不同的方法可以完成您尝试做的事情的基本想法。我建议您继续阅读您的 C++ 书籍以了解有关这些主题的所有内容,以便确定最适合您的情况。 -
^那,请在
switch之后显示您想要使用slog实现的目标。
标签: c++ struct typedef quicksort binaryfiles