Related articles |
---|
Multi-method jm@bourguet.org (Jean-Marc Bourguet) (2002-03-31) |
Re: Multi-method haberg@matematik.su.se (2002-04-06) |
Re: Multi-method vbdis@aol.com (2002-04-06) |
Re: Multi-method joachim_d@gmx.de (Joachim Durchholz) (2002-04-06) |
Re: Multi-method jm@bourguet.org (Jean-Marc Bourguet) (2002-04-07) |
Re: Multi-method jm@bourguet.org (Jean-Marc Bourguet) (2002-04-07) |
Re: Multi-method mailbox@dmitry-kazakov.de (Dmitry A.Kazakov) (2002-04-07) |
Re: Multi-method joachim_d@gmx.de (Joachim Durchholz) (2002-04-07) |
Re: Multi-method rprogers@seanet.com (Richard Rogers) (2002-04-10) |
From: | vbdis@aol.com (VBDis) |
Newsgroups: | comp.compilers |
Date: | 6 Apr 2002 23:19:38 -0500 |
Organization: | AOL Bertelsmann Online GmbH & Co. KG http://www.germany.aol.com |
References: | 02-03-190 |
Keywords: | OOP |
Posted-Date: | 06 Apr 2002 23:19:38 EST |
Jean-Marc Bourguet <jm@bourguet.org> schreibt:
>In the first case, the use of "vtable" allows to have an efficient way
>of making this dispatch, even in the context of separate compilation
>(at the cost of constraining the possible types).
>
IMO the types here are not constrained. Every new type has a new VMT,
and since the invocation goes from the object (instance) through its
VMT to its method, it's a pretty extensible system.
With multiple parameters C++ templates may be useful. The key IMO is
the separation of the various parameters, so that in the best case
every single parameter can be handled separately. Otherwise up to N^M
procedures are required, to handle N parameters of M possible types.
In Delphi the TPersistent class has an Assign mechanism, which allows
to assign one object to another one. When A.Assign(B) is invoked, then
A executes the assignment if B is of a type, which is built into
A.Assign. Otherwise A calls B.AssignTo(A), whereupon B tries to
execute the assignment, in the opposite direction. Both Assign and
AssignTo are virtual methods, which pass unhandled arguments (types)
to their parent class method. If neither A nor B know about the other
type, then the assignment fails.
How would you exclude the latter case, that no procedure can handle a
given combination of dynamic types?
DoDi
Return to the
comp.compilers page.
Search the
comp.compilers archives again.