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

即使您要在CStringArray函数中返回对GetArray()的引用,也要在上面的行中复制数组。 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

10-08 11:06