COM/interface question
Jarrett Billingsley
kb3ctd2 at yahoo.com
Sun Dec 2 07:20:15 PST 2007
"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