程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 處理VC++編譯報錯error C2248的計劃

處理VC++編譯報錯error C2248的計劃

編輯:關於C++

處理VC++編譯報錯error C2248的計劃。本站提示廣大學習愛好者:(處理VC++編譯報錯error C2248的計劃)文章只能為提供參考,不一定能成為您想要的結果。以下是處理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;
}

那末在完成了這個自界說類後,開端應用它

先界說變量數組

CArray<COptRect, COptRect&> optArray;

在這個數組後,我們應用一個添加新元素的敕令

// 向界面添加一個操作區域
void CSurface::AddOptRect(CRect Start, CRect End, int DesID)
{
 COptRect ort;
 ort.m_OptStartRect = Start;
 ort.m_OptEndRect = End;
 ort.m_OptDesSurface = DesID;
 optArray.Add(ort);
}

如斯操作後,不再報下面的毛病!成績處理

案例二:

在寫一個MFC法式,編譯的時刻出了個error C2248: “CObject::operator =”: 沒法拜訪 private 成員(在“CObject”類中聲明),定位不到那部門的代碼出了成績,

看網上有很多人也碰到了這個成績。

剖析了下我寫的法式與之前的分歧,個中有個一個處所用到了Image Picture控件的CStatic類對象,一開端用的指針對象,後來改成對象就除下面的成績,改回來就ok了.

後來查了一下,這類對控件操作的對象最好都聲明成指針,否則就會報下面的毛病。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved