gpt4 book ai didi

c++ - 返回 CStringArray 给出错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:59 26 4
gpt4 key购买 nike

我试图返回一个 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();

即使您在 GetArray() 函数中返回对 CStringArray 的引用,也正在上面的行中创建数组的拷贝。 CStringArray 本身没有定义复制构造函数,它派生自 CObject,它有一个私有(private)复制构造函数。

将行改为

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

关于c++ - 返回 CStringArray 给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com