猿问

CStringList 为啥不能用作函数的返回值?

CStringList CTestDlg::CStringListTest()
{
m_strList.AddTail(_T("Test"));
return m_strList;
}

CStringList listTest = CStringListTest();
m_strEdit = listTest.GetHead();
UpdateData(FALSE);

然后编译就出错了!!!
1>d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxcoll.h(899): error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
1> d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(534) : 参见“CObject::CObject”的声明
1> d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(509) : 参见“CObject”的声明
1> 此诊断出现在编译器生成的函数“CStringList::CStringList(const CStringList &)”中

小怪兽爱吃肉
浏览 936回答 2
2回答

肥皂起泡泡

=操作符在CStringList类中是私有成员函数,所以无法赋值。如果你不想在外面改动m_strList的值,可以考虑将函数CStringListTest()定义为const CStringList& CStringListTest() const;

一只斗牛犬

CStringList listTest = CStringListTest();CStringList没有提供赋值构造函数,并且CStringList的基类中的赋值构造函数是私有的。你可以用CstringList提供的构造函数CstringList(INT_PTR nBlockSize = 10)
随时随地看视频慕课网APP

相关分类

Cocos2d-x
我要回答