MFC 中字符串的问题

CMyFile类表示一个文件classCMyFile{LPCTSTRm_strPath;public:CMyFile(LPCTSTRpath):m_strPath(pat... CMyFile类表示一个文件
class CMyFile{
LPCTSTR m_strPath;
public:
CMyFile(LPCTSTR path):m_strPath(path){}
};
然后我在程序中使用的时候
CFileDialog dlg(TRUE);
if(dlg.DoModel()==IDOK){
//下面这一句会导致对象的m_strPath成员乱码
m_pFile=new CMyFile(dlg.GetPathName());
//而这样不会乱码
CString s=dlg.GetPathName();
m_pFile=new CMyFile(s);
求详细解释,不要复制
展开
 我来答
注册ID真NND难
2011-03-01 · TA获得超过169个赞
知道答主
回答量:80
采纳率:0%
帮助的人:53.6万
展开全部
LPCTSTR首先明白这是一个指针,不是对象。函数的返回结果在GetPathName()方法调用完后就被销毁了,所以m_strPath成了野指针。第二种方式,是将结果拷贝一份保存到s对象中(运算符重载)。所以m_strPath是正常的。
专杀卡巴斯基
2011-02-28 · TA获得超过157个赞
知道小有建树答主
回答量:343
采纳率:0%
帮助的人:260万
展开全部
CString 和 LPCTSTR 可以说通用。 原因在于CString定义的自动类型转换,没什么奇特的,最简单的C++操作符重载而已。
建议楼主看看http://baike.baidu.com/view/1902461.htm,类型问题

参考资料: http://baike.baidu.com/view/1902461.htm

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiugeen
2011-02-28 · TA获得超过210个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:173万
展开全部
有些东西是有限制的~~~~new CMyFile();括号里面不能再用函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式