我试图返回一个CStringArray: 在我的“.h”中,我定义了:
Private:
CStringArray array;
public:
CStringArray& GetArray();
在。 cpp我有:
CQueue::CQueue()
{
m_hApp = 0;
m_default = NULL;
}
CQueue::~CQueue()
{
DeleteQueue();
}
CStringArray& CQueue::GetArray()
{
return array;
}
从另一个文件中我试图通过以下方式调用它:
CStringArray LastUsedDes = cqueue.GetArray();
我想是因为上面这行我得到了错误:
error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
答案 0 :(得分:4)
问题在于这一行
CStringArray LastUsedDes = cqueue.GetArray();
即使您在CStringArray
函数中返回对GetArray()
的引用,也会在上面的行中生成该数组的副本。 CStringArray
本身没有定义复制构造函数,它派生自CObject
,它有一个私有拷贝构造函数。
将行更改为
CStringArray& LastUsedDes = cqueue.GetArray();
但请注意,LastUsedDes
现在引用了您的类实例中包含的相同CStringArray
,并且对其中所做的任何更改都将在另一个中显示。
如果需要返回数组的本地副本,可以使用Append
成员函数复制内容。
CStringArray LastUsedDes; // default construct the array
LastUsedDes.Append( cqueue.GetArray() ); // this will copy the contents of the
// returned array to the local array