Я пишу код, который использует библиотеку без конструктора по умолчанию (есть, но он скоро устареет и выдает предупреждения), и я хотел бы использовать его внутри класса.Теперь я знаю, что есть несколько ответов для этого в целом, но ни один, кажется, не отвечает на мой конкретный вариант.
Вот почему: конструктор библиотеки получает указатель на два массива, которыеиспользуется для ввода и вывода.Мне нужно выделить память для этих массивов, и я должен сделать это до того, как я вызову конструктор этой библиотеки.
Поэтому мне нужна альтернатива спискам конструкторов, которая позволит мне контролировать порядок, или Мне нужно знать, как выделить память для объектов внутри списка конструкторов.
Вот соответствующий код:
Мой класс:
class audio_class{
arduinoFFT FFT;//cannot call constructor HERE, but that leaves the default!
double *real_samples;
double *imaginary;
//--snip--
};
Конструктор библиотеки:
arduinoFFT(double *vReal, double *vImag, uint16_t samples, double samplingFrequency);
Конструктор моего кода:
audio_class::audio_class() {
real_samples = new double[READINGS];
imaginary = new double[READINGS];
//Need to initialize arduinoFFT here? Or after allocation of samples, anyway. Constructor list would fire before I call the new[], and the pointers would be invalid. I think?
}
audio_class::~audio_class() {
delete[] real_samples;
delete[] imaginary;
}