0

我正在使用正弦振荡器回调处理其中一个 STK 程序。由于生成器类中的虚函数导致我的 ToneGen 类抽象,我在从生成器类继承的 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 位上执行此操作

4

1 回答 1

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;
于 2012-09-17T01:44:31.210 回答