我在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'
我该如何解决?请帮我!
答案 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;
};