enum InputType
{
VideoInputType,
ImageInputType,
VideoStreamInputType
};
class AbstractInput
{
public:
AbstractInput(std::string);
virtual InputType Type()=0;
std::string GetName();
virtual std::string GetFullName()=0;
std::string Name;
};
class VideoInput : AbstractInput
{
public:
VideoInput(std::string,std::string);
virtual InputType Type();
virtual std::string GetFullName();
std::vector<cv::Mat> Data;
};
class ImageInput : AbstractInput
{
public:
ImageInput(std::string,std::string);
virtual InputType Type();
virtual std::string GetFullName();
cv::Mat Data;
};
我的计划是使用 AbstractInput 作为函数参数。由于 AbstractInput 是抽象类,因此不可能存在实例。但在我看来,可能存在引用 VideoInput 或 ImageInput 的 AbstractInput&。
我的代码不起作用:
VideoInput vidInput(ui->nameLineEdit->text().toStdString(),path.toStdString());
AbstractInput &absInput=vidInput;
错误:
“AbstractInput”是“VideoInput”无法访问的基础
我怎样才能实现我想要的行为?
提前致谢。
最佳答案
您需要公开继承:
//"public" keyword
class VideoInput : public AbstractInput
//"public" keyword
class ImageInput : public AbstractInput
关于c++ - 抽象基类 C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18113008/