E0322 不允许使用抽象类类型 “XXXX“ 的对象

 如图,在堆区new一个实例化对象出现错误

解决方法

检查父类中虚函数的名称,出现此种情况说明父类纯虚函数并未完全被子类重写

核对发现子类名称错误

改正即可

	//倒入杯中
	virtual void PourInCup()
	{
		cout << "将咖啡倒入杯中" << endl;
	}

 问题解决,报错结束

总结:

/new 提示实例化类对象的时候,提示不能实例化抽象类
//原因:1、创建类class的时候,只要有一个未实例化的虚函数,那么本类即为抽象类,
//不将该虚函数实现,是无法创建该类的。
//2、还有可能是继承的基类中有虚函数没有实现,那么也是无法实现这个派生类的
//对象的。有时候需要去该派生类的基类中去查看。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据给定的问题,我理解“e0322允许使用抽象类类型 \cv::sift\ 的对象”是错误信息或错误代码。该错误指示在代码中使用了一个抽象类类型对象,即不能直接创建该对象的实例。因此,我们需要通过使用子类或其他有效方式来解决这个问题。 SIFT(尺度不变特征变换)是一种计算机视觉算法,用于在图像中检测和描述局部特征。在OpenCV库中,SIFT算法的实现是通过抽象类\cv::SIFT来提供的。因为\cv::SIFT是一个抽象类,所以不能直接实例化该类的对象。 为了解决这个问题,我们可以使用OpenCV库中提供的其他类或函数来使用SIFT算法,而不是直接使用\cv::SIFT类。OpenCV库提供了一个非抽象类\cv::xfeatures2d::SIFT,它是\cv::SIFT的子类,可以用来创建SIFT算法的实例。所以,我们可以通过使用\cv::xfeatures2d::SIFT类来解决这个问题。 代码示例如下所示: ```cpp #include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> int main() { cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR); // 创建 SIFT 算法实例 cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create(); // 使用 sift 实例进行特征提取 std::vector<cv::KeyPoint> keypoints; cv::Mat descriptors; sift->detectAndCompute(image, cv::noArray(), keypoints, descriptors); // 其他操作... return 0; } ``` 通过以上代码,我们使用了\cv::xfeatures2d::SIFT类来创建了SIFT算法的实例,并使用该实例进行了图像特征提取。这样就解决了“e0322允许使用抽象类类型 \cv::sift\ 的对象”的错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值