在类声明中写入
CPacket *m_pPacket;
在CDlgView结构函数写
*m_pPacket = new CPacket(m_lstOut);
在析构函数写delete m_pPacket
CPacket *m_pPacket;
在CDlgView结构函数写
*m_pPacket = new CPacket(m_lstOut);
在析构函数写delete m_pPacket
解决方案 »
- MFC如何直接显示子窗体?
- 进制转换
- 使用C 开发的WINDOWS程序,如果我程序同时有3个窗口,请问这3个窗口是多线程吗?
- MoveFile不能移动文件夹到其他分区?
- 请问在从CRichEditView类继承的视类中如何得到指向视图的CEdit控件??
- 菜鸟问题,怎么生成avi文件??
- CListCtrl排序问题
- 我的地球时代一运行报错,内存0X00000000为Read,动态库Low-Level Engine.dll报错,谁能帮我,我的E-mail : [email protected]
- Tab Control这个控件如何使用
- 2000密码
- 如何用CreateWindow涵数在用AppWizard生成的程序中再建一个子窗口?
- 分割窗口里的是不是一定要用CScrollView
: CDialog(CDlgview::IDD, pParent):m_Packet(m_lstOut)
{
}
你的方法看起来是可行的,但实际上却不行。
代码如下:
CDlgview::CDlgview(CWnd* pParent /*=NULL*/)
: CDialog(CDlgview::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgview)
m_szCommand = _T("");
m_Command2 = _T("");
//}}AFX_DATA_INIT
cUnix = new CPacket(m_lstOut);
}
VC6的错误信息是:
D:\Cteam\Monitor\Dlgview.cpp(26) : error C2664:
'__thiscall CPacket::CPacket(class CListBox)' : cannot
convert parameter 1 from 'class CListBox' to 'class CListBox'
No copy constructor available for class 'CListBox'
但是,如果我将 CPacket 的构造函数改写成传指针的方式,
错误就消除了。代码如下:
CPacket::CPacket(CListBox * pOut)
{
pLstOut = pOut;
}CDlgview::CDlgview(CWnd* pParent /*=NULL*/)
: CDialog(CDlgview::IDD, pParent)
//:cUnix(m_lstOut)
{
//{{AFX_DATA_INIT(CDlgview)
m_szCommand = _T("");
m_Command2 = _T("");
//}}AFX_DATA_INIT
cUnix = new CPacket(&m_lstOut);
}给人的感觉是,在构造函数传送类的实体就会出问题。
真是很怪。另外,如果 CPacket 类不用指针(new ...... delete),
直接用 CPacket cUnix, 可不可以?
CDlgview::CDlgview (CWnd* pParent /*=NULL*/)
: CDialog (CDlgview::IDD, pParent)
, m_lstOut (其初始值)
, cUnix (CPacket (m_lstOut))
{
}
而且这里的m_lstOut 应该为指针类型
class A
{
public:
A();
};
void Func(A a); // 错,类A没有拷贝构造函数
这个问题的解决办法有三种:
1. 为类A加一拷贝构造函数A(const A& a);
2. Func原型改为指针调用 void Func(A* pa);
3. Func原型改为引用调用 void Func(A& a);
delete 看来还是用指针比较不易出现这种编译问题。