abstract class?vc6和vs2005不兼容?该怎么解决
abstract class?vc6和vs2005不兼容?
同样的代码,在vc6下编译运行没有问题,但是在vs2005中却不行。望达人给予解答,多谢!
程序的功能是xml解析,用sax。class结构如下:
class SAXContentHandlerImpl : public ISAXContentHandler
......
class CIndexHandler : public SAXContentHandlerImpl
......
其中,CIndexHandler是自己定义的类,用于解析xml并建立索引。其中对于如下函数进行了修改:
startDocument, endDocument, start/end Element, characters
在vs2005中编译时出现错误。
错误位置为:
CIndexHandler* pIH = new CIndexHandler; 即new一个对象的时候
错误信息为:
f:\my documents\_project\_passed\parser_3\main.cpp(20) : error C2259: 'CIndexHandler ' : cannot instantiate abstract class due to following members:
'HRESULT MSXML2:: ISAXContentHandler:: startPrefixMapping (unsigned short *,int,unsigned short *,int) ' : is abstract
f:\my documents\_project\_passed\parser_3\ debug\msxml4.tlh(499) : see declaration of 'MSXML2:: ISAXContentHandler :: startPrefixMapping '
'HRESULT MSXML2::ISAXContentHandler::endPrefixMapping(unsigned short *,int) ' : is abstract f:\my documents\_project\_passed \parser_3 \debug\msxml4.tlh(504) : see declaration of 'MSXML2::ISAXContentHandler::endPrefixMapping '
'HRESULT MSXML2::ISAXContentHandler::startElement(unsigned short *,int,unsigned short *,int,unsigned short *,int,MSXML2:: ISAXAttributes *) ' : is abstractf:\my documents\_project\_passed\ parser_3\debug\msxml4.tlh(507) : see declaration of 'MSXML2:: ISAXContentHandler::startElement '
'HRESULT MSXML2::ISAXContentHandler::endElement(unsigned short *,int,unsigned short *,int,unsigned short *,int) ' : is abstract
......
------解决方案--------------------
派生类CIndexHandler 需要实现父类ISAXContentHandler::startPrefixMapping(作为虚接口函数)等方法,手工在CIndexHandler中实现这些方法 即可.
------解决方案--------------------
vc6和vs2005处理的import的结果有点不大一样。
同样的代码,在vc6下编译运行没有问题,但是在vs2005中却不行。望达人给予解答,多谢!
程序的功能是xml解析,用sax。class结构如下:
class SAXContentHandlerImpl : public ISAXContentHandler
......
class CIndexHandler : public SAXContentHandlerImpl
......
其中,CIndexHandler是自己定义的类,用于解析xml并建立索引。其中对于如下函数进行了修改:
startDocument, endDocument, start/end Element, characters
在vs2005中编译时出现错误。
错误位置为:
CIndexHandler* pIH = new CIndexHandler; 即new一个对象的时候
错误信息为:
f:\my documents\_project\_passed\parser_3\main.cpp(20) : error C2259: 'CIndexHandler ' : cannot instantiate abstract class due to following members:
'HRESULT MSXML2:: ISAXContentHandler:: startPrefixMapping (unsigned short *,int,unsigned short *,int) ' : is abstract
f:\my documents\_project\_passed\parser_3\ debug\msxml4.tlh(499) : see declaration of 'MSXML2:: ISAXContentHandler :: startPrefixMapping '
'HRESULT MSXML2::ISAXContentHandler::endPrefixMapping(unsigned short *,int) ' : is abstract f:\my documents\_project\_passed \parser_3 \debug\msxml4.tlh(504) : see declaration of 'MSXML2::ISAXContentHandler::endPrefixMapping '
'HRESULT MSXML2::ISAXContentHandler::startElement(unsigned short *,int,unsigned short *,int,unsigned short *,int,MSXML2:: ISAXAttributes *) ' : is abstractf:\my documents\_project\_passed\ parser_3\debug\msxml4.tlh(507) : see declaration of 'MSXML2:: ISAXContentHandler::startElement '
'HRESULT MSXML2::ISAXContentHandler::endElement(unsigned short *,int,unsigned short *,int,unsigned short *,int) ' : is abstract
......
------解决方案--------------------
派生类CIndexHandler 需要实现父类ISAXContentHandler::startPrefixMapping(作为虚接口函数)等方法,手工在CIndexHandler中实现这些方法 即可.
------解决方案--------------------
vc6和vs2005处理的import的结果有点不大一样。