COM/interface question

Mike vertex at gmx.at
Sun Dec 2 07:44:44 PST 2007


Ah! Of course! I translated the SDK from C++, where it's all pointers, and didn't care (excactly because "." does (usually) behaves like "->"). Now it's all IASIO without pointers.

Thanks!

-Mike

Jarrett Billingsley Wrote:

> "Jarrett Billingsley" <kb3ctd2 at yahoo.com> wrote in message 
> news:fiuib6$2oiq$1 at digitalmars.com...
> > "Mike" <vertex at gmx.at> wrote in message 
> > news:fiuejb$2j6g$1 at digitalmars.com...
> >> I'm getting a strange compilation error with a COM interface I'm trying 
> >> to access. Here's the relevant part of the interface:
> >>
> >> extern(Windows) interface IASIO : IUnknown
> >> {
> >>    ASIOBool init(void*);
> >> [snip]
> >>    ASIOError getChannels(long*, long*);
> >> [snip]
> >> }
> >>
> >> And here's the problem:
> >>
> >> test.init(null); // Error: function expected before (), not null of type 
> >> IASIO*
> >> test.getChannels(&ichans, &ochans); // compiles
> >>
> >> test is of type IASIO*. ASIOBool and ASIOError are both aliases for long. 
> >> The null in the "init" is not the problem; if I give the function the 
> >> correct pointer it doesn't compile as well.
> >>
> >> Has anybody any idea why one call compiles and the other doesn't?
> >
> > That's certainly odd, but you don't/shouldn't be using an IASIO*. 
> > Interfaces are already reference types, so where you'd use an IASIO* in 
> > C/C++, use an IASIO in D.
> 
> And it just dawned on me why the init isn't working: init is a property of 
> all D types and variables.  The second one works because the . there is 
> working like -> in C.
> 
> init should then work fine if you use an IASIO. 
> 
> 




More information about the Digitalmars-d mailing list