assert_valid(pdoc);
assert(pdoc->m_pdoctemplate == null);
pdoc->m_pdoctemplate = this;
}
由于单文档模板只能拥有一个文档,所以它只是维护一个指向自己所拥有的模板的指针:m_ponlydoc,adddocument函数就是要为这个成员赋值:
void csingledoctemplate::adddocument(cdocument* pdoc)
{
......
cdoctemplate::adddocument(pdoc);
m_ponlydoc = pdoc;
}
由于多文档模板可以拥有多个文档,所以它要维护的是包含它所打开的所有文档的指针的链表,所以它的adddocument的实现为:
void cmultidoctemplate::adddocument(cdocument* pdoc)
{
......
cdoctemplate::adddocument(pdoc);
m_doclist..addtail(pdoc);
}