私はshared_ptrの概念を初めて使い、普通のものの代わりにスマートポインタを使用するように私のプログラムを再構築しようとしていました。私はshared_ptrをXerces-cで使用しようとしています。エラーハンドラの初期化に問題があります。Xerces-c&shared_ptrs
私はerrorHandlerを実装するクラスを持っています。私はsetErrorHandler関数にErrorHandlerを実装しましたから、クラスに合格しようとしています実装では
class Handler: public ErrorHandler {
public:
void warning (const SAXParseException&) { cerr << "THIS IS A WARNING\n";}
void error (const SAXParseException&) { cerr << "THIS IS A ERROR\n"; return;}
void fatalError(const SAXParseException&) { cerr << "THIS IS A FATALERROR\n";}
void resetErrors() {}
}
:
boost::shared_ptr<XercesDOMParser> m_Parser;
boost::shared_ptr<Validator> m_ErrorHandler;
m_ErrorHandler = boost::shared_ptr<Handler>(new Handler());
m_Parser->setErrorHandler(m_ErrorHandler);
しかし、エラーが出て、最後の行に型が一致doesntのため、 :
エラー:注意: 'xercesc_3_1 :: XercesDOMParser :: setErrorHandler(後押し:: shared_ptrの&)' を /opt/include/xercesc/parsers/XercesDOMParser.hpp:236への呼び出しに該当する機能の候補者は次のとおりです。通常のポインタを無効xercesc_3_1 :: XercesDOMParser :: setErrorHandler(xercesc_3_1 ::のErrorHandler *)
、言って大丈夫だった:
XercesDOMParser * m_Parser;
Handler * errorHandler;
m_Parser = new XercesDOMParser;
errorHandler = new Handler();
m_Parser->setErrorHandler(errorHandler);
をしかし、スマートポインタを使用している場合、この初期化はどのように行われていますか?ありがとう
.get()は完全に機能しました。ありがとう! – user459811