2
我對這種繼承概念有點新,我無法弄清楚什麼是錯的。 我會很樂意爲您提供一些幫助。繼承錯誤 - 無法實例化抽象類無法訪問在類中聲明的受保護的成員
所以我有三個類和一個主:
class BaseClassPipeline
{
protected:
BaseClassPipeline::BaseClassPipeline(void){};
virtual int executeFilter (SRV *p_Srv) = 0;
BaseClassPipeline::~BaseClassPipeline(void){};
};
class filter_A:public BaseClassPipeline
{
**edit: protected and not public**
**public:**
filter_A:::filter_A(void);
int filter_A::executeFilter (SRV *p_Srv){return 1}
filter_A:::~filter_A(void);
};
class PipelineAttr
{
protected:
PipelineAttr::PipelineAttr(FILE *cfgFile, SRV *p_Srv){...};
BaseClassPipeline** PipelineAttr::createPipeline(FILE *cfgFile){...};
int PipelineAttr::getNumOfFilters(){...};
PipelineAttr::~PipelineAttr(void){...};
};
class Pipeline:public BaseClassPipeline, public PipelineAttr
{
public:
Pipeline::Pipeline(FILE *cfgFile, SRV *p_Srv) : PipelineAttr(cfgFile, p_Srv){}
int Pipeline::executePipeline(SRV *p_Srv);
int Pipeline::countFilters();
Pipeline::~Pipeline(void);
};
這是主要的:
void main()
{
...
Pipeline pipe(cfgFile, srv); // trying to create instance of pipeline
}
我想閱讀一些其他職位,但無法弄清楚我在做什麼錯誤。
我得到這些消息:
'管道':不能實例化抽象類
'filter_A :: filter_A':不能訪問類中聲明 'filter_A'
保護成員謝謝。
嘿嘿,謝謝你你回答。我很抱歉我缺乏知識。你的意思是「如果你不覆蓋該類的純虛函數,那麼你的派生類也將是抽象的。」 ? 我應該爲主執行「管道管道(cfgFile,srv)」; ? – user1673206 2015-01-04 11:27:21
我已經更新了答案......如果您瀏覽網站,您將會更多地瞭解抽象類。 – ravi 2015-01-04 11:54:13