我定义了一个自己的类CMyLabel,继承自CObject,
内有:
CMyLabel();
CMyLabel(CMyLabel &label);
CMyLabel operator=(CMyLabel &label);
virtual ~CMyLabel();DOC定义:
#include <afxtempl.h>
.......
CObArray m_LabelArray;
CMyLabel *m_pLabel;
在DOC的类中,如下两行代码出错:
m_pLabel=(CMyLabel*)new CMyLabel;
pDoc->m_LabelArray.Add((CMyLabel*)m_pLabel);
error C2512: 'CMyLabel' : no appropriate default constructor available
error C2664: 'Add' : cannot convert parameter 1 from 'class CMyLabel *' to 'class CObject *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
内有:
CMyLabel();
CMyLabel(CMyLabel &label);
CMyLabel operator=(CMyLabel &label);
virtual ~CMyLabel();DOC定义:
#include <afxtempl.h>
.......
CObArray m_LabelArray;
CMyLabel *m_pLabel;
在DOC的类中,如下两行代码出错:
m_pLabel=(CMyLabel*)new CMyLabel;
pDoc->m_LabelArray.Add((CMyLabel*)m_pLabel);
error C2512: 'CMyLabel' : no appropriate default constructor available
error C2664: 'Add' : cannot convert parameter 1 from 'class CMyLabel *' to 'class CObject *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Add那里改成Add(*(CObject*)m_pLabel);//至于是CObject还是CMyLabel都 无所谓。
CObject有 Create(...)方法吗??你的CMyLabel不是窗口吧?如果要那种标签的效果,那要继承于CStatic比较好。第一个报错没有合适的默认构造函数可以调用。
我查了
CObArray::Add
int Add( CObject* newElement );
throw( CMemoryException );
所以,CObArray::Add 应该是要填写基类指针的。不过Create就没有了吧,我的又不是窗口类。
CObArray::Add
int Add( CObject* newElement );
throw( CMemoryException );不是一个窗口,确实不需要Create。第一个问题,明明他上面代码里有默认constructor,所以不明白。