在CArray中使用CArray对象 [英] using CArray object in CArray

查看:84
本文介绍了在CArray中使用CArray对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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





i have a problem to use CArray object in 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 !!!! 
}





此错误是:



this error is:

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





如何解决?请帮助我!



how do i resolve it? please help me!

推荐答案

因为CArray要求其元素类型是可复制的,我应该为ArrClass类定义复制构造函数和赋值运算符函数。



because CArray requires its element type to be copyable, i should define "copy constructor" and "assignment operator" functions for "ArrClass" class.

class ArrClass : public CArray<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;
    };
};





错误已解决。



the error resolved.


我认为此代码没问题。



I think this code is ok.

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;
    };





还有其他解决方案吗?



there is other solution?


这篇关于在CArray中使用CArray对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆