Strange behavior
    yvad 
    yannurov at gmail.com
       
    Tue Mar 25 04:01:49 PDT 2008
    
    
  
I have 2 modules.
// IUnknown.d
module IUnknown;
pragma(lib, "ole32.lib");
public import HRESULT;
extern (C) {
        const GUID IID_IUnknown;
}
extern (Windows) {
        interface IUnknown {
                HRESULT QueryInterface(in GUID* riid, out void* ppvObject);
                uint AddRef();
                uint Release();
        }
}
abstract class AbstractUnknown : IUnknown {
        extern (Windows):
        // IUnknown
        HRESULT QueryInterface(GUID* riid, out void* ppvObject);
        uint AddRef() {
             ....
        }
        uint Release() {
             ....
        }
}
// and  IClassFactory.d
module win32.api.com.interfaces.IClassFactory;
pragma(lib, "ole32.lib");
public import IUnknown;
extern (C) {
        const GUID IID_IClassFactory;
}
extern (Windows) {
        interface IClassFactory : IUnknown {
                HRESULT CreateInstance(in IUnknown pUnknown, in GUID* riid, out void* ppvObject);
                HRESULT LockServer(in bool fLock);
        }
}
abstract class AbstractClassFactory : AbstractUnknown, IClassFactory {
        extern (Windows):
        // IUnknown
        HRESULT QueryInterface(in GUID* riid, out void* ppvObject) {
             ....
        }
        ....
}
And I get an error on line in AbstractClassFactory "HRESULT QueryInterface(in GUID* riid, out void* ppvObject) {":
Severity and Description    Path    Resource    Location    Creation Time    Id
QueryInterface of type HRESULTWindows (GUID * riidriid, out void* ppvObject ppvObject) overrides but is not covariant with QueryInterface of type HRESULT(GUID * riidriid, void* ppvObject ppvObject)    import/win32/api/com/interfaces    IClassFactory.d    line 28    1206420149328    12010
if I comment line in AbstractUnknown with "HRESULT QueryInterface(in GUID* riid, out void* ppvObject);" it compiles without any error.
Is it should be so or I am doing something wrong?
I have this error on dmd 1.028 and 2.012 on Windows.
    
    
More information about the Digitalmars-d-learn
mailing list