Проблема генератора обратного вызова STK с виртуальной функцией

Я работаю над одной из программ STK, используя обратный вызов синусоидального генератора. У меня возникают проблемы при создании объекта из моего класса ToneGen, который наследуется от класса Generator, из-за виртуальной функции в классе Generator, которая заставляет мой класс ToneGen абстрагироваться. Я пробовал указатели, но это, кажется, вызывает проблемы с получением данных для соответствующего метода. Если я использую указатели, мой код прерывается здесь в файле ToneGen.h

void setRate( StkFloat rate ) { rate_ = rate; };

В противном случае без указателей я получаю эту ошибку

src\crtToneGen.cpp(36): error C2259: 'stk::ToneGen' : cannot instantiate abstract class
due to following members:
'stk::StkFrames &stk::Generator::tick(stk::StkFrames &,unsigned int)' : is abstract
C:\VS10 Projects\StkNewInst\crtToneGen\include\Generator.h(43) : see declaration of 'stk::Generator::tick'

Вот виртуальная функция в классе генератора

virtual StkFrames& tick( StkFrames& frames, unsigned int channel = 0 )=0;

В любом случае, чтобы избежать этого, я попробовал несколько других методов на другом посту, но еще не повезло.

Код, который я изменяю, можно найти Вот

Я делаю это на VisualStudio 2010 Windows 7 32 бит

0

Решение

stk::StkFrames &stk::Generator::tick(stk::StkFrames &,unsigned int)

Является абстрактным и должен быть реализован в вашем производном классе

class ToneGen: public stk::Generator
{
stk::stkFrames& tick(stk::StkFrames& frames,unsigned int something)
{
return stk::stkFrames(); // Don't do this, return something useful.
}
}

Вы должны реализовать эту функцию в своем производном классе, так как базовый класс не предоставляет функциональности для этого метода. Это объявление в stk заголовок будет:

stk::StkFrames &stk::Generator::tick(stk::StkFrames &,unsigned int) = 0;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]