在CArray中使用CArray对象

时间:2014-07-27 11:38:40

标签: visual-c++ mfc

我在CArray中使用CArray对象时遇到问题

// .h file
class ArrClass : public CArray<int, int>
{
public:
    int m_id;
    void Func1(){ m_id = 1;};
};

// .cpp file
void CTestDlg::OnBnClickedButton1()
{
    ArrClass arr1;
    CArray<ArrClass, ArrClass> arr2;
    arr2.Add(arr1);     // error !!!! 
}

此错误是:

error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'

我该如何解决?请帮我!

3 个答案:

答案 0 :(得分:2)

我应该为&#34; ArrClass&#34;定义“复制构造函数”和“赋值运算符”函数。上课。

class ArrClass : public CArray<int, int>
{
public:
    int m_id;

    ArrClass(){};
    ArrClass(const ArrClass& obj){m_id = obj.m_id;};    // copy constructor
    void Func1(){ m_id = 1;};
    ArrClass operator=(const ArrClass& obj) // assignment operator
    {
        m_id = obj.m_id;
        return *this;
    };
};

错误已解决,谢谢大家。

答案 1 :(得分:1)

CArray要求其元素类型可以复制 - 但它本身不可复制。因此,您不能拥有CArray CArray s。

请考虑使用std::vector

答案 2 :(得分:0)

这段代码好吗?

ArrClass(const ArrClass& obj)   // copy constructor
    {
        Copy(obj);

        m_id = obj.m_id;
    };  

ArrClass operator=(const ArrClass& obj) // assignment operator
    {
        Copy(obj);

        m_id = obj.m_id;
        return *this;
    };