Pointer to C++ member possible?
Bill Baxter
dnewsgroup at billbaxter.com
Sun Mar 9 14:03:46 PDT 2008
Jarrett Billingsley wrote:
>> But seems like lack of a similar concept in D is a problem. The topic of
>> C++-like pointer-to-member has come up before. I think there is some sort
>> of hack to do a D version of it by setting the delegate's .ptr property?
>> Casting to void* and setting it seems to work:
>
> Works for pointers-to-member-functions (that is, if the given C++ ABI uses
> the same ABI as a delegate), but what about pointers-to-member-data?
Is there such a thing in C++? AFAIK pointer-to-member-data is just the
same thing as "pointer-to-data" in both C++ and D. Anyway if c++ does
have it, I think you could fake it with .offsetof and casts.
( http://www.digitalmars.com/d/1.0/class.html )
However, .offsetof seems broken at the moment. This example for the
docs doesn't compile for me:
class Foo
{
int x;
}
...
void test(Foo foo)
{
size_t o;
o = Foo.x.offsetof; // yields 8
}
With dmd 1.028 I get:
ptrmemfun.d(29): Error: 'this' is only allowed in non-static member
functions, not test
ptrmemfun.d(29): Error: this for value needs to be type Foo not type int
--bb
More information about the Digitalmars-d-learn
mailing list