2012-09-17 81 views
0

我正在使用正弦振盪器回調來處理其中一個STK程序。由於生成器類中的虛擬函數導致我的ToneGen類進行抽象,因此從我的ToneGen類創建一個從Generator類繼承的對象時遇到問題。我已經嘗試過指針,但它似乎導致問題獲取數據到適當的方法。如果我使用我的三分球打破代碼在這裏ToneGen.h文件帶虛函數的STK回調振盪器問題

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' 

這裏是發電機類

​​ 虛擬功能

有無論如何要避免這種情況,我已經嘗試了其他職位上的其他技術,但還沒有任何運氣。

我正在修改代碼,可以發現here

我在VisualStudio中做這個2010米的Windows 7 32位

+0

STK代表合成工具包的方式 – Alex

回答

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

所以我把第一塊色調創頭:\t靜態StkFrames table_; \t \t StkFloat phaseOffset_; \t \t unsigned int iIndex_; \t \t StkFloat alpha_; \t}; \t stk :: StkFrames&tick(stk :: StkFrames&frames,unsigned int channel) { return frames; } \t直列StkFloat tonegen的::蜱(無效) \t但是,當我把第二個聲明在STK頭我接收到一個錯誤,限定符必須是基類STK的一部分:: StkFrames。我在stk Header中的StkFrames類中實現了它,並不確定它會去哪裏。謝謝 – Alex

+0

把它放在一個pastebin中,並把它鏈接到這裏 – Aesthete

+0

http://pastebin.com/0FhecUn8 – Alex