我收到一个奇怪的错误,告诉我我无法访问在类“CObject”中声明的私有(private)成员,当只是尝试将 CStringArray 传递给我编写的函数以将其分解时。
我已经注释掉了我的整个函数代码,所以我知道问题在于对象本身的传递,我假设我这样做不正确。

这是我的代码:

    // If successful, read file into CStringArray
    CString strLine;
    CStringArray lines;
    while (theFile.ReadString(strLine))
    {
        lines.Add(strLine);
    }

    // Close the file, don't need it anymore
    theFile.Close();

    // Break up the string array and separate it into data
    CStringArrayHandler(lines);

这是我的 CStringArrayHandler 函数:
void CSDI1View::CStringArrayHandler(CStringArray arr)
{
    // Left out code here since it is not the cause of the problem
}

这是我的头文件中函数的声明:
class CSDI1View : public CView
{
// Operations
public:
    void CStringArrayHandler(CStringArray arr);   // <<<<===================

这是我收到的错误的全文:

最佳答案

您正在按值传递 CStringArray arr,因此 CStringArray 的复制构造函数必须是可访问的。但事实并非如此,因为 CStringArray 继承自 CObject ,它禁止复制(这就是编译器错误消息,您实际上没有完全粘贴在这里,是说)

解决方法是通过引用传递 arr:

void CStringArrayHandler(const CStringArray& arr);

关于c++ - 尝试传递 CStringArray 会导致错误无法访问类 'CObject' 中声明的私有(private)成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27052268/

10-11 22:59