代码之家  ›  专栏  ›  技术社区  ›  aduric

XECSE C++ SAX解析问题:在'{'令牌之前的预期类名

  •  0
  • aduric  · 技术社区  · 16 年前

    error: expected class-name before '{' token
    

    我四处寻找了一个解决方案,我知道这个错误可能是由循环包含或在使用类之前没有定义类引起的,但是从代码中可以看到,我只有2个文件:MySAXHandler.hpp和MySAXHandler.cpp。但是,MySAXHandler类是从HandlerBase派生的,HandlerBase包括在内。

    #include <xercesc/sax/HandlerBase.hpp>
    
    class MySAXHandler : public HandlerBase {
    public:
        void startElement(const XMLCh* const, AttributeList&);
        void fatalError(const SAXParseException&);
    };
    

    MySAXHandler.cpp文件

    #include "MySAXHandler.hpp"
    #include <iostream>
    
    using namespace std;
    
    MySAXHandler::MySAXHandler()
    {
    }
    
    void MySAXHandler::startElement(const XMLCh* const name,
                           AttributeList& attributes)
    {
        char* message = XMLString::transcode(name);
        cout << "I saw element: "<< message << endl;
        XMLString::release(&message);
    }
    
    void MySAXHandler::fatalError(const SAXParseException& exception)
    {
        char* message = XMLString::transcode(exception.getMessage());
        cout << "Fatal Error: " << message
             << " at line: " << exception.getLineNumber()
             << endl;
        XMLString::release(&message);
    }
    

    我是这样编译的:

    g++ -L/usr/local/lib -lxerces-c -I/usr/local/include -c MySAXHandler.cpp 
    

    提前谢谢。

    1 回复  |  直到 16 年前
        1
  •  2
  •   kloffy    16 年前

    尝试添加 using namespace xercesc; 或者显式指定Xerces类的命名空间(例如。 xercesc::HandlerBase ).

    编辑: XERCES_CPP_NAMESPACE_USE 宏,它应该与using语句等效。

    推荐文章