У меня есть массив в моем MainProcessor
float waveforms[2][1080] = { {0}, {0} };
И я передаю его SynthVoice вот так:
osc1Voice->setWavetable(waveforms, 0); //[1]
osc2Voice->setWavetable(waveforms, 1);
Там я читал это вот так в SynthVoice.h:
typedef float array_of_wavetable[1080];
void setWavetable(array_of_wavetable* waveform, int number)
{
wavetable = waveform;
id = number;
}
, поэтому я могу использовать его вот так в моем классе SynthVoice:
wavetable[id][first_sample + int(phase_0)]
Теперь я переместил [1] в новый класс (OscilatorProcessor.h) и хочу установить указатель из MainProcessor -> OscillatorProcessor -> SynthVoice таким образом, чтобы я мог использовать его как wavetable [id] [phase].
Теперь я не знаю, как передать его из моего MainProcessor в OscillatorProcessor в середина. Так что я могу прочитать это таким же образом в классе SynthVoice.
Надеюсь, это имело смысл. Спасибо за ваше время
редактировать: минимальный воспроизводимый пример
#include <iostream>
typedef float array_of_wavetable[1080];
class SynthVoice
{
public:
void setWavetable(array_of_wavetable* waveform, int number)
{
wavetable = waveform;
id = number;
}
void outputWavetable()
{
for(int i = 0; i < 1080; i++)
{
std::cout << wavetable[id][i];
}
}
private:
array_of_wavetable * wavetable;
int id;
};
class OscillatorProcessor
{
public:
void setWavetable(array_of_wavetable * waveform, int number)
{
wavetable = waveform;
id = number;
}
void sendWaveToVoice()
{
SynthVoice voice;
voice.setWavetable(wavetable, id);
voice.outputWavetable();
}
private:
array_of_wavetable * wavetable;
int id;
};
int main() {
float waveform_templates[4][1080] = { {0}, {0}, {0}, {0} };
OscillatorProcessor oscillator;
oscillator.setWavetable(waveform_templates, 2);
return 0;
}