繁体   English   中英

试图传递CStringArray给出错误无法访问类'CObject'中声明的私有成员

[英]Trying to pass a CStringArray gives error cannot access private member declared in class 'CObject'

我收到一个奇怪的错误告诉我,当我只是尝试将CS​​tringArray传递给我编写的函数以将其分解为碎片时,我无法访问在类'CObject'中声明的私有成员。 我已经注释掉了我的整个函数代码,所以我知道问题存在于对象本身的传递中,我假设我做错了。

这是我的代码:

    // 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);   // <<<<===================

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

错误1错误C2248:'CObject :: CObject':无法访问在类中声明的私有成员>'CObject'c:\\ program files(x86)\\ microsoft visual studio 12.0 \\ vc \\ atlmfc \\ include \\ afxcoll.h 590 1> SDI -1

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

解决方案是通过引用传递arr

void CStringArrayHandler(const CStringArray& arr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM