in main: ... SineWave sine; AudioCallback dac; dac.startAudio(&sine); ... in AudioCallback.cpp ... int tick (char *buffer, int bufferSize, void *dataPointer) { ... SineWave *sine = (SineWave*) dataPointer; sine->useSomeFunction(); ... } void AudioCallback::startAudio(void *data) { ... a_data.dac->setStreamCallback(&tick, &data); //setStreamCallback sets a function which will be called by an RealTime AudioSystem, // the 2nd argument is used for passing user data to this function. ... }