0

サインオシレーターコールバックを使用して、STKプログラムの1つに取り組んでいます。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;

これを回避する方法はありますか?他の投稿で他のいくつかのテクニックを試しましたが、まだ運がありません。

私が変更しているコードはここにあります

私はこれをVisualStudio2010Windows732ビットで行っています

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 に答える