如何在函数中使用typedef?

时间:2017-11-24 16:39:11

标签: c++ struct typedef quicksort binaryfiles

我正在编写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定义为存储在文件中的数据类型,以便稍后可以使用它来获取该结构的大小和其他一些东西。

1 个答案:

答案 0 :(得分:0)

了解Sam提到的内容:请查看this answer和this页面,了解有关该主题的更多信息。希望它们可以帮助您了解更大的图景。

直接回答你的问题:在运行时将slog定义为数据类型将会很麻烦。更多细节here

快速解决您想要的问题是定义一个结构标志,它可以为您保存不同的信息,如下所示:

struct slog()
{
    int my_val_int = -1;
    char* my_val_char = "";
}

一旦返回值,您只需检查my_val_int是否与默认值不同或者char是否为空来检查实际设置的值。

请注意,这是一种非常快速和肮脏的方式。请使用它作为起点,以发展自己的如何构建程序的想法,因此它以精益和平均的方式工作! :-)

古德勒克!