国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

解決VC++編譯報錯error C2248的方案

2020-01-26 14:49:43
字體:
來源:轉載
供稿:網友

在使用諸如: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了.

后來查了一下,這種對控件操作的對象最好都聲明成指針,不然就會報上面的錯誤。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家港市| 芜湖县| 舟山市| 昌吉市| 广安市| 民乐县| 灵丘县| 吕梁市| 崇州市| 同江市| 上饶县| 贵州省| 石门县| 花垣县| 枣阳市| 谷城县| 长治县| 齐河县| 井冈山市| 广南县| 奉新县| 天镇县| 建德市| 大方县| 历史| 木兰县| 临清市| 永仁县| 蕉岭县| 平昌县| 西昌市| 大田县| 通城县| 海林市| 莆田市| 江孜县| 墨脱县| 思南县| 潮安县| 许昌市| 大庆市|