![](/img/trans.png)
[英]How to create “CArray<CArray<CString>>& results” in MFC?
[英]How to use CArray inside CArray in MFC?
我需要在像這樣的新數組中使用自定義數組。
typedef CArray<CPoint,CPoint&> arr1;
typedef CArray<arr1,arr1&> arr2;
arr1 a;
arr2 b;
b.Add(a);
我收到此錯誤:
錯誤C2248:“ CObject :: operator =”:無法訪問在類“ CObject”中聲明的私有成員
這里的問題是CArray
沒有復制構造函數和operator=()
。 但是您可以輕松擴展此類並實現所需的功能:
template <class TYPE, class ARG_TYPE>
class CArrayEx : public CArray<TYPE, ARG_TYPE>
{
// Construction
public:
CArrayEx ()
{
};
CArrayEx (const CArrayEx &x)
{
*this = x;
};
// Assigment
public:
CArrayEx &operator = (const CArrayEx &x)
{
if(this != &x)
{
Copy(x);
}
return *this;
};
};
之后,您可以定義自己的類型,如下所示:
typedef CArrayEx<CPoint, CPoint&> CPointArray;
typedef CArray<CPointArray, CPointArray&> CDoublePointArray;
這是有關如何使用它的非常簡單的示例:
CDoublePointArray doubleArray;
CPointArray singleArray;
singleArray.Add(CPoint(10,10));
doubleArray.Add(singleArray);
作為CArray
的替代解決方案,我建議使用std::vector
。 您可以直接使用它,因為它帶有復制構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.