Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
December 19, 2016 Pointer to private structure | ||||
---|---|---|---|---|
| ||||
In C, we can define a struct without body in an include file and use pointer to that structure For examples in public header file. struct data; data* new_data(); We can then define the elements of struct data privately inside the implementation of library. Can we do this in D without using void* ? |
December 19, 2016 Re: Pointer to private structure | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nikhil Jacob | On Monday, 19 December 2016 at 05:51:09 UTC, Nikhil Jacob wrote:
> In C, we can define a struct without body in an include file and use pointer to that structure
>
> For examples in public header file.
>
> struct data;
> data* new_data();
>
>
> We can then define the elements of struct data privately inside the implementation of library.
>
> Can we do this in D without using void* ?
Yes.
|
December 19, 2016 Re: Pointer to private structure | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nikhil Jacob | i bet that just trying this with D compiler will take less time than writing forum post. |
December 19, 2016 Re: Pointer to private structure | ||||
---|---|---|---|---|
| ||||
Posted in reply to ketmar | On Monday, 19 December 2016 at 06:21:10 UTC, ketmar wrote:
> i bet that just trying this with D compiler will take less time than writing forum post.
I did try but it seems to give compilation failure... Let me try once more and I will get back with more details.
|
December 19, 2016 Re: Pointer to private structure | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nikhil Jacob | On Monday, 19 December 2016 at 06:42:27 UTC, Nikhil Jacob wrote: > On Monday, 19 December 2016 at 06:21:10 UTC, ketmar wrote: >> i bet that just trying this with D compiler will take less time than writing forum post. > > I did try but it seems to give compilation failure... Let me try once more and I will get back with more details. What're you trying to do here? Forward declarations in C++ are used to solve a few different things: 1. Reduce build times (unneeded in D AFAIK) 2. Break cyclic references (unneeded in D again?) 3. Give APIs visibility (D's modules and Access layers solve this) 4. Maintain binary compatibility while allowing internal data changes (aka pimlp idiom) <-- This I believe you cannot do in D - https://wiki.dlang.org/Access_specifiers_and_visibility (someone correct me if I'm wrong) I've seen something about .di files in D. But they seem flakey a bit. |
December 19, 2016 Re: Pointer to private structure | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali | On Monday, 19 December 2016 at 10:14:49 UTC, Ali wrote:
> On Monday, 19 December 2016 at 06:42:27 UTC, Nikhil Jacob wrote:
>> [...]
>
> What're you trying to do here?
>
> Forward declarations in C++ are used to solve a few different things:
> 1. Reduce build times (unneeded in D AFAIK)
> 2. Break cyclic references (unneeded in D again?)
> 3. Give APIs visibility (D's modules and Access layers solve this)
> 4. Maintain binary compatibility while allowing internal data changes (aka pimlp idiom) <-- This I believe you cannot do in D - https://wiki.dlang.org/Access_specifiers_and_visibility (someone correct me if I'm wrong)
>
> I've seen something about .di files in D. But they seem flakey a bit.
I was trying to do something similar to pimlp idiom.
But after thinking over it, I found a better way in D.
Thanks for pointing to the wiki
|
Copyright © 1999-2021 by the D Language Foundation