Michael Van Canneyt wrote:


On Thu, 17 Aug 2006, Albert Zeyer wrote:

No, it will not. Reference counting with interfaces only works if you
use interfaces as referencing types (so it has to be 'var MyObject:
IUnknown'), all class-typed variables will not counted. I think this is
because all class-typed variables are simply pointers and an interface
variable is handled special (like a smart-pointer-structure in C++,
which capsulate a pointer and does the reference counting automatically
for you; this works, because a smart-pointer is constructed on the heap
and so, it will automatically call the destructor if it goes out of
scope).

Is there a way to make a smart-pointer in pascal? Is it possible to
create objects on the heap so that they will get destroyed and freed
automatically when they get out of scope? Or is there a way to get
informed if a class-typed variable get out of scope?

No. This has been discussed in the past, but no clean implementation could
be found, so the idea was dropped.


The problem with ref. counting classes is that classes could have cyclic references which can't be handled properly by ref. counted data types.

_________________________________________________________________
    To unsubscribe: mail [EMAIL PROTECTED] with
               "unsubscribe" as the Subject
  archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to