gpt4 book ai didi

c++ - 错误 C2259 : 'CDocument' : cannot instantiate abstract class

转载 作者:行者123 更新时间:2023-11-28 07:58:47 31 4
gpt4 key购买 nike

我收到以下错误:

error C2259: 'CDocument' : cannot instantiate abstract class

对于以下代码:

BOOL CVisuComm::OnOpenDoc()
{
CDocument myCDoc; //LINE AT WHICH THE ERROR OCCURS
CInterfaceDoc myCInterfaceDoc;

char tabchar[80]="c:/test111.dat";
CString myFilename;
myFilename="c:/test111.dat";

/*if(!myCDoc.OnOpenDocument(tabchar))
{
MessageBox("Erreur à l'ouverture..","OnOpenDocument",MB_OK);
return false;
}
else
{
MessageBox("Ouverture OK..","OnOpenDocument",MB_OK);
}*/

myCInterfaceDoc.OnOpenDocument("c:/test111.dat");
return true;
}

感谢任何帮助。

最佳答案

error C2259: 'CDocument' : cannot instantiate abstract class

编译器准确地告诉您您需要知道的内容。您不应该创建 CDocument 的具体实例 - 事实上您不能,正如您刚刚看到的那样。相反,to quote the MSDN :

To implement documents in a typical application, you must do the following:

  • Derive a class from CDocument for each type of document.

你可能会问为什么。答案实际上也在 MSDN 上,尽管是以迂回的方式:

Override the CObject::Serialize member function in your document class to write and read the document's data to and from disk.

当调用周围应用程序代码的保存方法时,它们可以针对 CDocument* 接口(interface)而不是具体类编写。这允许他们对每种类型的文档执行完全相同的操作 - 即调用 serialize 方法。

关于c++ - 错误 C2259 : 'CDocument' : cannot instantiate abstract class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12039123/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com