SAX/C++: First interface draft

Steinar Bang sb at metis.no
Tue Dec 28 07:18:53 GMT 1999


>>>>> James Clark <jjc at jclark.com>:

> One interesting issue is whether to provide a virtual destructor.  I
> think the safest solution is not to provide a virtual destructor but
> instead to declare but not define a private operator delete.  This makes
> it a compile time error to do:

>   DTDHandler *p;
>   // ...
>   delete p;

I'm in the process of making a dispatching DocumentHandler (one that
looks at the top level element of the document and maps from this
element's tag name to the appropriate DocumentHandler).

For this I would like to use a DocumentHandler factory class, and just 
delete the DocumentHandler when I've finished parsing.

But this gets hard to do if the DocumentHandler base class destructor
is private.

Of course there is an easy workaround by wrapping the DocumentHandler
subclass in another class that knows about the subclass, ie. something 
like this:

class MyAdapter : public AdapterBase {
public:
    MyAdapter();
    virtual ~MyAdapter();

    virtual DocumentHandler& handler() { return handler; }
private:
    MyDocumentHandler handler_;
};

(where handler() is defined as a virtual function in AdapterBase, and
AdapterBase is the class known by the dispatching DocumentHandler).

But it seems like a bit of unneccessary indirection.

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list