gpt4 book ai didi

c++ - 继承错误 - 无法实例化抽象类\无法访问类中声明的 protected 成员

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:10 24 4
gpt4 key购买 nike

我对这种继承概念有点陌生,我无法弄清楚哪里出了问题。我很乐意提供一些帮助。

所以我有三个类(class)和一个主类(class):

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
}

我尝试阅读其他一些帖子,但无法弄清楚我做错了什么。

我收到这些消息:

'Pipeline' : cannot instantiate abstract class

'filter_A::filter_A' : cannot access protected member declared in class 'filter_A'

谢谢。

最佳答案

“管道”:无法实例化抽象类

您继承自抽象基类 BaseClassPipeline。这意味着如果您不覆盖该类的纯虚函数,那么您的派生类也将是抽象的。

class Pipeline:public BaseClassPipeline, public PipelineAttr
{
public:
Pipeline::Pipeline(FILE *cfgFile, SRV *p_Srv) : PipelineAttr(cfgFile, p_Srv){}
int executeFilter (SRV *p_Srv) {} <<<< Now, you have provided the definition.

“filter_A::filter_A”:无法访问类“filter_A”中声明的 protected 成员

定义 filter_A 的正确语法是:-

class filter_A:public BaseClassPipeline
{
public:
filter_A();
int executeFilter (SRV *p_Srv) { return 1; }
~filter_A();
};

关于c++ - 继承错误 - 无法实例化抽象类\无法访问类中声明的 protected 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com