Re: Dual interface
"George" <George@discussions.microsoft.com> wrote in message
news:45387372-3598-41AB-AA8E-3F2BF4EE4319@microsoft.com
In VS 2008, I created an ATL project and make coclass (C++ class in
below sample) CCTest123 implements multiple dual interface --
interface ICTest123 and interface ITest456.
So, the code below,
public IDispatchImpl<ICTest123, &IID_ICTest123, &LIBID_TestATL1Lib,
/*wMajor =*/ 1, /*wMinor =*/ 0>,
public IDispatchImpl<ITest456, &__uuidof(ITest456),
&LIBID_TestATL1Lib, /* wMajor = */ 1, /* wMinor = */ 0>
will be expanded to
IDispatchImpl : ICTest123
IDispatchImpl : ITest456
IDispatchImpl is not a class, it's a template. The hierarchy is
IDispatchImpl<ICTest123, ...> : ICTest123
IDispatchImpl<ITest456, ...> : ITest456
IDispatchImpl<ICTest123, ...> and IDispatchImpl<ITest456, ...> are two
distinct classes, even though they are generated from the same template.
I think in C++ we do not allow such grammar
Who is "we" in this sentence? I personally have no problems with this
"grammar".
to make a class derive
from different classes, I expect compile error
Why? What's wrong with having one class derive from several different
classes? Surely you are familiar with the concept of "multiple
inheritance" by now.
but the code could
actually compile?? Any ideas why it could compile?
Because it's a valid C++ code, I guess. Why shouldn't it compile?
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925