Я пишу хобби-проект, в котором я пишу в файлы .wav.Я решил, что лучший способ сделать это - создать один файл C с набором подпрограмм для инициализации и манипулирования структурой с метаданными о волновом файле, которые пользователь никогда не должен манипулировать вручную, а вместо этого должен передать указатель на подпрограммы.Пример того, как будет выглядеть этот интерфейс, выглядит следующим образом:
/* wave_new_file() implicitly allocates memory for the struct */
Wavefile *outputWave = wave_new_file("out.wav", WAVE_mono);
int i;
for (i = 0; i < MAX_RANDOM_SAMPLES; i++)
wave_write(outputWave, rand());
wave_close(outputWave);
Я понимаю, что остальная часть моей конструкции потенциально может быть упрощена в долгосрочной перспективе с использованием подхода ООП, такого как вследующий псевдо-C ++ (поскольку я на самом деле не знаком с C ++; об этом позже):
Wavefile *outputWave = new Wavefile("out.wav", WAVE_mono);
for (int i = 0; i < MAX_RANDOM_SAMPLES; i++)
outputWave->write(rand());
outputWave->close(); /* Or delete perhaps? */
Проблема в том, что остальная часть моего проекта написана на C99;и я на самом деле не знаю C ++ (я изучил ООП из Python, но сейчас концентрируюсь на программировании на C).
Должен ли я: реорганизовать свой дизайн, чтобы не полагаться в большой степени на принципы ООП, или я должен уделить время и изучить C ++ и перенести всю свою программу на C ++?Это не большая программа, и - это просто хобби-проект (что объясняет мое переосмысление колеса путем создания моего собственного модуля для записи .wav).Или мне следует продолжить псевдообъектно-ориентированный дизайн, который я сейчас пишу?