Ich stellte dieses Problem heute und frage mich nur, wie man überprüft, ob ein neuer mit typedef definierter Typ irgendwo definiert ist. Um ein Beispiel zu nennen, habe ich begonnen, die Xerces-c3-Bibliothek zu verwenden, die ich aus dem Quellcode erstellt habe, und einen xml2text-Konverter geschrieben. Aber ich konnte Xerces-c3 Port auf fbsd nicht finden, also installierte Xerces-c2 Bibliothek.Wie man überprüft, ob ein Datentyp mit typedef "definiert" ist
Als ich versuchte, meine Quellcode neu zu kompilieren Ich habe folgende Fehlermeldung:
XML2Text.cc:83: error: cannot declare variable 'handler' to be of abstract type 'XML2TextHandlers'
XML2TextHandlers.h:32: note: because the following virtual functions are pure within 'XML2TextHandlers':
/usr/local/include/xercesc/framework/XMLFormatter.hpp:454: note: virtual void xercesc_2_7::XMLFormatTarget::writeChars(const XMLByte*, unsigned int, xercesc_2_7::XMLFormatter*)
ich für writeChars Methode in meiner Header-Datei folgende Definition bin mit
virtual void writeChars(const XMLByte* const toWrite,
const XMLSize_t count,
XMLFormatter* const formatter);
Ich habe, dass XMLSize_t ist nichts anderes als unsigned int mit folgenden deklariert:
#define XERCES_SIZE_T size_t
typedef XERCES_SIZE_T XMLSize_t;
Also wenn ich mak e ein Code, der mit beiden Bibliotheken kompatibel ist, wie mache ich das? Eine Möglichkeit, an die ich denken kann, ist zu überprüfen, ob die Version der Bibliothek und XMLSize_t
entsprechend definieren. Irgendein anderer Weg?
Danke,
Shripad
Yup, nach dem Problem dadurch gelöst: fand ich, dass diese Art in Xerces_autoconf_config.hpp erklärt was in xerces-c3 eingeführt wird, aber nicht in xerces-c2. So tat folgendes: #ifndef XERCES_AUTOCONFIG_CONFIG_HPP #define XMLSize_t unsigned int #endif –