我正在编写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&#39;
我想将slog定义为存储在文件中的数据类型,以便稍后可以使用它来获取该结构的大小和其他一些东西。
答案 0 :(得分:0)
了解Sam提到的内容:请查看this answer和this页面,了解有关该主题的更多信息。希望它们可以帮助您了解更大的图景。
直接回答你的问题:在运行时将slog定义为数据类型将会很麻烦。更多细节here。
快速解决您想要的问题是定义一个结构标志,它可以为您保存不同的信息,如下所示:
struct slog()
{
int my_val_int = -1;
char* my_val_char = "";
}
一旦返回值,您只需检查my_val_int是否与默认值不同或者char是否为空来检查实际设置的值。
请注意,这是一种非常快速和肮脏的方式。请使用它作为起点,以发展自己的如何构建程序的想法,因此它以精益和平均的方式工作! :-)
古德勒克!