GLib/GObject+C as the lingua franca?

Thiago Macieira thiago at
Wed Jul 30 22:29:45 BST 2008

nf2 wrote:
>Will the refcounter be inside QObject or inside the pointer-holding
> class?

QObjects don't have an internal reference counter. So the counter has to 
be outside.

I'm trying to make it so that QSharedPointer supports both pointers 
internal and external.

>Because in the latter case you would loose the refcount as soon as you
>just pass the pointer to a function or try to cast the pointer:
>QRefCountedPointer<A> a = new A();


This is C++, we have cast operators :-)

>QRefCountedPointer<B> = dynamic_cast<B*> a.p;

QSharedPointer<B> = a.dynamicCast<B>();
QSharedPointer<B> = qSharedPointerDynamicCast<B>(a);

In any case, if the object passes itself as pointers to other points (such 
as in a signal emission or in "return this"), then the reference counting 
has to be internal to the object. That's the only way to keep a 
consistent count.

Also be careful if any object that can be reference counted holds an 
object by reference counting. Eventually that may lead to cyclic 
reference counting.

  Thiago Macieira  -  thiago (AT) - thiago (AT)
    PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <>

More information about the kde-core-devel mailing list