C ++XercesXMLライブラリの実装用に示した例を実行しようとしています。コードを正確にコピーしましたが、コンパイルに問題があります。
error: expected class-name before '{' token
私は解決策を探しましたが、このエラーは循環インクルードまたは使用前にクラスを定義していないことが原因である可能性があることを知っていますが、コードからわかるように、MySAXHandler.hppと2つのファイルしかありません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++に少し慣れていません。
前もって感謝します。