为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小怪兽爱吃肉 2019-02-05 10:07:01
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 &)”中
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-03-25
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

CStringList listTest = CStringListTest();
CStringList没有提供赋值构造函数,并且CStringList的基类中的赋值构造函数是私有的。
你可以用CstringList提供的构造函数CstringList(INT_PTR nBlockSize = 10)

查看完整回答
反对 回复 2019-03-25
  • 2 回答
  • 0 关注
  • 881 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信