这个是错的,只申请了空间没初始化对象,没有调用构造函数,没又构造函数得话,怎么能说明这个地方存放这个类得实例呢?是是对象实例,那么你就不能用指针指向,搭建引用,那么也就没办法指向成员了。
= afxDataNil); m_pchData = stringSrc.m_pchData; InterlockedIncrement(&GetData()->nRefs); //引用次数增1,这里为了防止多线程情况下出错,使用了原子性自增 } } return *this; } CString 的拷贝构造函数没有使用内存分配,而是使用的引用,它内部保存了一个引用的计数器(这是错误的根源)。 比如: CString...
Cstring.Find()出错. 问:当我调用Cstring的成员函数"Find",带了一个参数.编译器提示出错. Error C2661: 'Find' : no overloaded function takes 2 parameters 我使 用的例子是从MSDN下来的 Cstring::Find(TCHARch,intnStart) 答:要使得这个成员函数带有两个参数,可以自己完成:(VC5中只支持一个参数)...
如果你的代码是两块不相干的作用域应该不会有什么问题,出错了那大半可能是你的内存写越界了。。检查一下CommandLength的长度是否会大于你声明的固定长度,如果没有什么发现的话可以单步调试,监视str的值变化 有用 回复 撰写回答 你尚未登录,登录后可以 和开发者交流问题的细节 关注并接收问题和回答的更新提醒 参与...
(const char*s); ~MyString()delete[]data; protected: unsigned len; char*data;; MyString::MyString(const char*S) len=stflen(s); dara=new char[1en 1]; strcpy(dara,s); int main() MyString a(“C Programing”); MyString b(a); return 0; 在运行上面的程序时出错,出错的原因是( )...
//Release版本下出错情况: //error C2664: “strcmp”: 不能将参数1 ,2从“CString”转换为“const char *” //于是改成下面的:在前面添加(char *)(LPCTSTR)。 if(strcmp((char *)(LPCTSTR)csNewListBoxText,(char *)(LPCTSTR)csOldListBoxText)!=0) ...
在此,我个人认为:CString封装得确实很完美,它有许多优点,如“容易使用 ,功能强,动态分配内存,大量进行拷贝时它很能节省内存资源并且执行效率高,与标准C完全兼容,同时支持多字节与宽字节,由于有异常机制所以使用它安全方便” 其实,使用过程中之所以容易出错,那是因为我们对它了解得还不够,特别是它的实现机制。因为我...
MFC编程框架下,不需要任何头文件调整,可以直接使用CString(注意大小写一致),如果不能直接使用,那么只能说明你这个不是标准MFC工程。非MFC工程使用CString类,除了需要在工程配置中声明使用MFC,还需要检查stdafx.h中的文件包含,需要包含如下头文件(有顺序问题,需要尝试调整代码位置):include <afxdisp...
[1en+1]; strcpy(data,s); } int main( ){ MyString a("C++Progreanfing"); MyString b(A) ; return 0; } 在运行上面的程序时出错,错误的原因是 A.构造函数的实参不允许是本类的对象B.没有定义实现深层复制(深复制)的复制构造函数C.构造对象a时实参与形参类型不符D.系统不能生成缺失的复制构造...