16,551
社区成员
发帖
与我相关
我的任务
分享
typedef vector<CBase*> CBases;
typedef CBases::iterator CBITERATOR;
CBases m_children;
virtual void Read();
CBase::CBase()
{
CBase *p;
m_children.push_back(p); //应当怎样直接存放子类指针?
}
void CBase::Read()
{
CBITERATOR ite;
for (ite = m_children.begin(); ite != m_children.end(); ite++)
{
(*ite)->Read(); //这里应该每次取出一个子类指针来调用各自的Read()函数
}
}
void CDerive1::Read()
{
AfxMessageBox(_T("CDerive1"));
}
void CDerive2::Read()
{
AfxMessageBox(_T("CDerive2"));
}
*ite = CDerive1;
(*ite)->Read();
CBase::CBase(CBase* p)
{
m_children.push_back(p);
}
CDerive1::CDerive1() : CBase(this)
{
}
CDerive1::CDerive2() : CBase(this)
{
}
CBase *m_pBase;
m_pBase = new CDerive1();
m_pBase->Read(); // 调用CDerive1中实现的Read
m_pBase = new CDerive2();
m_pBase->Read(); // 调用CDerive2中实现的Read
CBase::CBase()
{
m_children.push_back(this);
AfxMessageBox(_T("CBase"));
}
CDerive1::CDerive1()
{
m_children.push_back(this);
AfxMessageBox(_T("CDerive1")); //没执行到
}
CDerive2::CDerive2()
{
m_children.push_back(this);
AfxMessageBox(_T("CDerive2")); //没执行到
}
CBase *m_pBase;
m_pBase = new CBase;
m_pBase->Read()
CBase::CBase()
{
m_children.push_back(this);
}
CDerive1::CDerive1()
{
m_children.push_back(this);
}
CDerive2::CDerive2()
{
m_children.push_back(this);
}