我在我的應用程序編寫GL效果系統,所以我有一個超類叫做的Win32/C++類的繼承問題
cEffect - 它處理加載/解析配置文件爲每個效果
和其他遺傳類新
CFX < 名> - 爲我添加的每一種效果(模糊,開花,混亂,...)。
的代碼如下簡化,但看起來是這樣的:
Class cEffect
{
public:
bool ParseString(...);
private:
int m_nStartFrame;
int m_nEndFrame;
float m_fSpeed;
};
// Blur effect
Class cFXBlur : public cEffect
{
public:
bool RenderFrame(...);
};
// Bloom effect
Class cFXBloom : public cEffect
{
public:
bool RenderFrame(...);
};
// Scene drawing effect
Class cFXScene : public cEffect
{
public:
bool RenderFrame(...);
};
// Clear the depth/color buffer
Class cFXClearBuffers : public cEffect
{
public
bool RenderFrame(...);
}
現在,演示引擎處理具有的效果列表中添加一個
std::vector<cEffect *> m_pvEffects;
載體。 而且當效果被添加到當前的時間(比方說,我添加一個模糊) 我添加它喜歡:
// Blur to be added
cEffect *newEffect = new cFXBlur;
newEffect->SetStartTime(x);
newEffect->SetEndTime(y);
newEffect->SetPower(13.0f);
newEffect->SetTexture(...);
// Now add the effect to the effects list.
m_pvEffects.push_back(newEffect);
現在,當我使我通過m_pvEffects列表迭代 - 而且我想打電話 RenderFrame方法(它是公開的每個CFX < 名稱>效果)。
(*it)->RenderFrame(...)
但是編譯器說:
錯誤C2039: 'RenderFrame':是不是成員 'CEffect'
我有點明白爲什麼會發生,但真的不能相信的一種方式我該如何解決這個問題, 請問你們能否幫我解決問題 - 好像我失去了這個陰謀......
感謝您的任何建議,我能做些什麼添加CFX到cEffect矢量和後 使用 - >RenderFrame方法?
謝謝bjoernz/christian - 非常有幫助的答案! – PeeS