我试图返回一个 CStringArray:
在我的“.h”中我定义了:
Private:
CStringArray array;
public:
CStringArray& GetArray();
在 。我有:
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'
问题出在这一行
CStringArray LastUsedDes = cqueue.GetArray();
即使您要返回对CStringArray
in the 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)