我從CArray派生了一個CArrayGraph2來定義二維陣列
并且也多載operator=,
然后
typedef CArray ARRINT;
typedef CArrayGraph2 ARRINT2;
定義了一個ARRINT2作為int型別的二維陣列,但在函式里只要
一呼叫該陣列的RemoveAll就編譯通不過,不曉得是哪有問題,
但是在VC6下,或者在VS2010正常專案下都可以編譯通過,
僅僅在動態庫工程里編譯通不過
動態庫里 定義了一個函式
TESTARRAY_API int fntestarray(ARRINT2& arrInterIndex)
{
arrInterIndex.RemoveAll();//把該行屏蔽就可以編譯通過
return 0;
}
https://pan.baidu.com/s/1boBOiZX 這里可以下載工程原始碼
報錯資訊如下:
d:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxtempl.h(262): error C2248: “CObject::operator =”: 無法訪問 private 成員(在“CObject”類中宣告)
1> d:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(535) : 參見“CObject::operator =”的宣告
1> d:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(509) : 參見“CObject”的宣告
1> 此診斷出現在編譯器生成的函式“CArray &CArray::operator =(const CArray &)”中
1> with
1> [
1> TYPE=int,
1> ARG_TYPE=int
1> ]
uj5u.com熱心網友回復:
error C2248 --代碼中通過傳值方式傳遞iostream物件,而非參考的方式。將傳遞值改為參考傳遞即可。
就是改成傳地址
uj5u.com熱心網友回復:
錯誤資訊不全,如果是 RemoveAll 引發的錯誤,應該最終能追溯到 RemoveAll 這行,但是貼出的錯誤說最后掛在 CArray &CArray::operator =(const CArray &) 里面了。uj5u.com熱心網友回復:
RemoveAll()=========
這個代碼貼出來看看
uj5u.com熱心網友回復:
你的operator =”: 實作有問題uj5u.com熱心網友回復:
動態庫匯出介面中建議1使用指標*
2 使用基本資料型別
uj5u.com熱心網友回復:
不要移植。在WinXP虛擬機中使用VC6。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/101150.html
標籤:基礎類
上一篇:IE加載atl控制元件,退出ie出現崩潰,用windbg查看如下資訊,求解是什么原因?
下一篇:單檔案 樹控制元件
