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' 的一个不可访问的基础
如何实现我想要的行为?
提前致谢。