
问题
我正在尝试返回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'
解决方案
问题就在这条线上
CStringArray LastUsedDes = cqueue.GetArray();
即使在GetArray()函数中返回对CStringArray的引用,也要在上面的行中复制数组. CStringArray本身未定义副本构造函数,而是从CObject派生而来cstring 数组 声明,后者具有私有副本构造函数.
将行更改为

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
本文解决: IT之家»返回CStringArray会出现错误
问题
我想返回一个CStringArray:

在我的.h中,我定义:
b $ b 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();
我认为这是由于上面的行,我得到了错误:

错误C2248: “ CObject :: CObject”: 无法访问在“ CObject”类解决方案中声明的私有成员
问题出在这条线上
CStringArray LastUsedDes = cqueue.GetArray();
即使您想在GetArray()函数中返回CStringArray,该数组的副本也在上面的行中. CStringArray本身未定义副本构造函数cstring 数组 声明,它来自CObject,它具有私有副本构造函数. p>
将行更改为
CStringArray& LastUsedDes = cqueue.GetArray();
但是请注意,您的类实例中包含的CStringArray中包含的LastUsedDes也是如此.
如果需要返回数组的本地副本,则可以使用Append成员函数复制内容.
CStringArray LastUsedDes; // default construct the array
LastUsedDes.Append(cqueue.GetArray()); //这将把
//返回数组的内容复制到本地数组
本文解决: IT之家»返回CStringArray会出现错误
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-149688-1.html
炒股票的钱永远都是进了印股票人的腰包
就像炒大蒜
一来在世界舆论面前证明自己仍是世界老大