解决VC++编译报错error C2248的方案

2020-01-06 14:00:26于海丽

易采站长站为您分析解决VC++编译报错error C2248的方案的相关资料,需要的朋友可以参考下

在使用诸如:CArray或是 CList等类时,经常会出现此错误

此错误的原因是由于自定义的类的数组项时

有一个操作如 Add() 在这个操作中,实际上需要一个 = 操作,但是这个 =操作在 自定义类中没有实现,于是,程序自动去它的parent 类 也就是 CObject 类去找,但是却找到个这个类的 = 是一个 private 于是就报了这个错误.

知道了原因解决方法自然就有了,那就是在自定义类中 重载操作符 = 重载后 这个错误就没有了.

 

 
  1. class COptRect : public CObject  { 
  2.   public: 
  3. COptRect();  virtual ~COptRect(); 
  4. // 操作的起始范围  CRect m_OptStartRect; 
  5. // 操作的结束范围  CRect m_OptEndRect; 
  6. // 操作的目标界面  int m_OptDesSurface; 
  7.   COptRect& operator = (COptRect & src); 
  8.   }; 

实现代码

 

 
  1. COptRect::COptRect()  : m_OptDesSurface(0) 
  2. {  } 
  3.   COptRect::~COptRect() 
  4. {  } 
  5.   COptRect& COptRect::operator = (COptRect & src) 
  6. {  this->m_OptDesSurface = src.m_OptDesSurface; 
  7. this->m_OptEndRect = src.m_OptEndRect;  this->m_OptStartRect = src.m_OptStartRect; 
  8. return *this;  }