Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich bin dabei eine große XML-Datei zu parsen und habe mir von MS das Beispiel für ISAXXMLReader angesehen.

Dazu habe ich mir den SAXAppWizzard heruntergeladen und das Beispiel ausprobiert. Beim Kompilieren trat der Fehler auf, das die Variable "*Test*" nicht vorhanden ist. Das muss man in "A1" ändern.

Das CMD-Tool läuft dann anständig durch.

Jetzt möchte ich das ganze in mein MFC-Dialog-Projekt einbinden. Und jetzt der Fehler:


XMLContentHandler * XMLContentHandler::CreateInstance()

 {

  XMLContentHandler * pXMLContentHandler = NULL;


  pXMLContentHandler = new XMLContentHandler(); //ERROR


  assert(pXMLContentHandler!=NULL);


  return pXMLContentHandler;

}

ERROR: XMLContentHandler.cpp(27): error C2259: 'XMLContentHandler': Instanz von abstrakter Klasse kann nicht erstellt werden

Wie kann das sein, wenn es bei CMD funktioniert. Die Aufrufe sind genau die selben und XMLContentHandler ist keine abstrakte Klasse, also kein void Name()=0; oder so.

ERROR: XMLContentHandler.cpp(27): error C2259: 'XMLContentHandler': Instanz von abstrakter Klasse kann nicht erstellt werden

Wie kann das sein, wenn es bei CMD funktioniert.

Du hast irgendwas kaputt gemacht.

Die Aufrufe sind genau die selben und XMLContentHandler ist keine abstrakte Klasse, also kein void Name()=0; oder so.
Die Klasse ist aber letztendlich von ISAXContentHandler abgeleitet. Und das ist ein Interface. Deine Klasse muss alle rein virtuellen Methoden von ISAXContentHandler implementieren. Vielleicht hast du eine umbenannt. Die Klassendefinition von XMLContentHandler wäre hier hilfreich.
  • Autor

Du hast irgendwas kaputt gemacht.

Ich war's nich'. ;)

Ich habe praktisch nur die Dateien umbenannt. Was vorher a1ContentHandler.cpp/.h war ist jetzt XMLContentHandler.cpp/.h und a1->XML. Sonst ist alles das selbe.

Hier die Ableitungen:

ISAXContentHandler (abstrakt) <- SAXContentHandlerImpl (hat alles übernommen) <- XMLContentHandler (übernimmt nur die benötigten Funktionen).

Aha, es läuft.

Was genau habe ich da jetzt gemacht?

In älteren Versionen von VC (vor 2005) war wchar_t standardmäßig ein typedef auf unsigned short*. Aus dieser Zeit stammt auch das Interface, dort sind die jeweiligen Parameter auch als unsigned short* deklariert.

Seit VC++ 2005 ist wchar_t standardmäßig ein eingebauter Typ, wie es der C++-Standard vorschreibt. Damit passt das nicht mehr zum Interface.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.