易采站长站为您分析解决VC++编译报错error C2248的方案的相关资料,需要的朋友可以参考下
在使用诸如:CArray或是 CList等类时,经常会出现此错误
此错误的原因是由于自定义的类的数组项时
有一个操作如 Add() 在这个操作中,实际上需要一个 = 操作,但是这个 =操作在 自定义类中没有实现,于是,程序自动去它的parent 类 也就是 CObject 类去找,但是却找到个这个类的 = 是一个 private 于是就报了这个错误.
知道了原因解决方法自然就有了,那就是在自定义类中 重载操作符 = 重载后 这个错误就没有了.
- class COptRect : public CObject {
- public:
- COptRect(); virtual ~COptRect();
- // 操作的起始范围 CRect m_OptStartRect;
- // 操作的结束范围 CRect m_OptEndRect;
- // 操作的目标界面 int m_OptDesSurface;
- COptRect& operator = (COptRect & src);
- };
实现代码
- COptRect::COptRect() : m_OptDesSurface(0)
- { }
- COptRect::~COptRect()
- { }
- COptRect& COptRect::operator = (COptRect & src)
- { this->m_OptDesSurface = src.m_OptDesSurface;
- this->m_OptEndRect = src.m_OptEndRect; this->m_OptStartRect = src.m_OptStartRect;
- return *this; }










