我动态创建了一个框架类的动态数组,如下所示:
CDllFrame *m_pDllFrame = new CDllFrame[3];我通过这样将三个自带有框架类、文档类和视类的窗体封装到了DLL中,但当我关闭其中一个窗体时(如关闭m_pDllFrame[2]这个窗体),由于框架类有自我销毁的功能,在该窗体关闭以后,m_pDllFrame[2]指针甚至都不存在了,这时我想再创建一个
框架类的事例,并将它赋给m_pDllFrame指针为什么老是编译通不过?
CDllFrame* p = new CDllFrame;
(m_pDllFrame+2) = p;则老是提示error C2106: '=' : left operand must be l-value
C的语法基础比较差,请高手耐心指教
CDllFrame *m_pDllFrame = new CDllFrame[3];我通过这样将三个自带有框架类、文档类和视类的窗体封装到了DLL中,但当我关闭其中一个窗体时(如关闭m_pDllFrame[2]这个窗体),由于框架类有自我销毁的功能,在该窗体关闭以后,m_pDllFrame[2]指针甚至都不存在了,这时我想再创建一个
框架类的事例,并将它赋给m_pDllFrame指针为什么老是编译通不过?
CDllFrame* p = new CDllFrame;
(m_pDllFrame+2) = p;则老是提示error C2106: '=' : left operand must be l-value
C的语法基础比较差,请高手耐心指教
解决方案 »
- 大家都来吧~~~
- 如何防止闪烁???
- 如何设置media player 控件里面的playlist?SetCurrentPlaylist(LPDISPATCH newValue)参数如何得到?
- iocp TransmitFile错误码183
- 各位大哥,小弟传送结构,总是只能收到一位,帮小弟看看
- 一个简单的winsock问题
- 注册表里的{8DE0FCD4-5EB5-11D3-AD25-00002100131B}这种是什么意思?
- 请高手指点如何调用CDC的函数,我是初学者!
- 问个简单的问题:怎样把AfxMessageBox显示后,自动选择确定
- 如何保存每2个字节(16位)表示一个象元的图象?
- shell编程中explorer退出无法跟踪调试
- 救命啊!请教多视图的问题
m_pDllFrame[2]指针甚至都不存在了
---
不可能,指针变量本身存在;它指向的对象销毁了2.
(m_pDllFrame+2) = p;
--
你定义变量的时候就有问题 CDllFrame *m_pDllFrame = new CDllFrame[3];
CDllFrame *m_pDllFrame[3] = new CDllFrame[3];
然后直接使用
m_pDllFrame[2] = p;
这是给谁赋值啊?m_pDllFrame?
为什么不是直接
m_pDllFrame[2] = new CDllFrame;
比较有创意,呵呵原因还真有点说不上来,应当是不能对表达式赋值吧
CDllFrame *m_pDllFrame[3] = new CDllFrame[3];
m_pDllFrame[2] = p;
CDllFrame *m_pDllFrame[3] = new CDllFrame[3];
然后直接使用
m_pDllFrame[2] = p;
和
CDllFrame *m_pDllFrame[3] = new CDllFrame[3];
有什么区别啊,多谢你啦
应该是*(m_pDllFrame+2) = p;或者m_pDllFrame[2] = p;m_pDllFrame+2不是一个左值表达式,只有左值表达式才能取到地址被赋值
CDllFrame *m_pDllFrame = new CDllFrame[3];
你想只改变第二个,可以自己定义下CDllFrame类的operate=运算符
CDllFrame* p = new CDllFrame; //创建了一个CDllFrame对象实例,指针p指向它
(m_pDllFrame+2) = p; //不是左值表达式,不能赋值,修改成m_pDllFrame[2] = p后将对象指针赋值给对象,没有对应的=操作符可以改成传递指针或者使用引用:
typedef CDllFrame *PCDllFrame;
PCDllFrame *m_pDllFrame = new PCDllFrame[3];CDllFrame* p = new CDllFrame;
m_pDllFrame[2] = p;
1.指针法
int *pInt= new int[3];
*(++pInt)=1;2.地址法
int *pInt= new int[3];
*(&pInt[0]+1) =1;3.下标法
int *pInt= new int[3];
pInt[1]=1;