在CArray中使用CArray对象 [英] using CArray object in CArray
本文介绍了在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屋!
查看全文