C++ pimpl
Timon Gehr
timon.gehr at gmx.ch
Sun Jan 22 16:33:47 PST 2012
On 01/23/2012 01:07 AM, so wrote:
> On Mon, 23 Jan 2012 01:39:23 +0200, so <so at so.so> wrote:
>
>> I have been asking that for some time now, i am afraid you won't get
>> much of an audience.
>> You can get rid of both additional allocation and indirection but it
>> is not pretty. We could definitely use some help/sugar on this.
>>
>> http://www.artima.com/cppsource/backyard3.html
>
> http://www.digitalmars.com/d/archives/digitalmars/D/Implementation_hiding_139625.html
>
>
> There is another issue Walter forgot to mention in the article.
> I think there might be a way but looks like we also loose the "destructor".
> Which means we are all the way back to the
> http://en.wikipedia.org/wiki/Opaque_pointer.
>
> Walter, is there a way to get around destructor limitation?
This seems to work.
a.di:
final class A{
private this();
static A factory();
T1 publicMember1(int x);
T2 publicMember2(float y);
T3 publicField;
// ...
}
a.d:
class A{
static A factory(){return new A;}
T1 publicMember1(int x){ ... }
T2 publicMember2(float y){ ... }
T3 publicField;
// ...
private:
T1 field1;
T2 field2;
}
More information about the Digitalmars-d
mailing list