Как использовать typedef в функции?

Я кодирую 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 как тип данных, который хранится в файле, чтобы я мог использовать его позже для получения размера этой структуры и нескольких других вещей.

1 ответ

Касаясь того, что упомянул Сэм: просмотрите этот ответ и эту страницу для получения дополнительной информации по этой теме. Надеюсь, они помогут вам понять общую картину.

Чтобы ответить на ваш вопрос напрямую: определение slog как типа данных во время выполнения будет просто беспорядочным. Подробнее здесь.

Быстрое решение для того, что вы хотите, - это определить структурный слог, который может содержать различную информацию для вас, например, так:

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

Как только пришло время вернуть значение, вы просто проверяете, какое значение фактически установлено, проверяя, отличается ли my_val_int от вашего значения по умолчанию или char не пустой.

Имейте в виду, это очень быстрый и грязный способ сделать это. Пожалуйста, используйте его только в качестве отправной точки для разработки собственного представления о том, как структурировать программу, чтобы она работала скудно и подло!:-)

Удачи!

Другие вопросы по тегам