簡體   English   中英

如何在MFC中的CArray中使用CArray?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM