【发布时间】:2011-02-02 04:07:42
【问题描述】:
我正在尝试运行为 C++ Xerces XML 库实现给出的示例。我已经准确地复制了代码,但是我在编译它时遇到了麻烦。
error: expected class-name before '{' token
我四处寻找解决方案,我知道这个错误可能是由于循环包含或在使用之前未定义类引起的,但是从代码中可以看出,我只有 2 个文件:MySAXHandler .hpp 和 MySAXHandler.cpp。但是,MySAXHandler 类是从 HandlerBase 派生的,包含在内。
MyHandler.hpp
#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
我查看了 HandlerBase 并定义了它,所以我不知道为什么我不能从中派生一个类?我是否必须覆盖 HandlerBase 中的所有虚函数?我对 C++ 有点陌生。
提前致谢。
【问题讨论】:
标签: c++ class include header xerces