default (C++)
Указывает, что настраиваемый или disp-интерфейс, определенный в коклассе, представляет интерфейс программирования по умолчанию.
Синтаксис
[ default(interface1, interface2) ]
Параметры
interface1
Интерфейс по умолчанию, который будет доступен для сред сценариев, создающих объект на основе класса, определенного атрибутом default
.
Если исходный интерфейс по умолчанию не указан, в качестве интерфейса по умолчанию используется первое вхождение неисходного интерфейса.
interface2
(Необязательно) Исходный интерфейс по умолчанию. Этот интерфейс также необходимо указать с помощью атрибута source .
Если исходный интерфейс по умолчанию не указан, в качестве интерфейса по умолчанию используется первый исходный интерфейс.
Замечания
Атрибут default
C++ имеет те же функции, что и атрибут MIDL по умолчанию . Атрибут default
также используется с атрибутом case .
Пример
Следующий код показывает, как default
используется в определении сокласса для указания ICustomDispatch
в качестве интерфейса программирования по умолчанию:
// cpp_attr_ref_default.cpp
// compile with: /LD
#include "windows.h"
[module(name="MyLibrary")];
[object, uuid("9E66A290-4365-11D2-A997-00C04FA37DDB")]
__interface ICustom {
HRESULT Custom([in] long l, [out, retval] long *pLong);
};
[dual, uuid("9E66A291-4365-11D2-A997-00C04FA37DDB")]
__interface IDual {
HRESULT Dual([in] long l, [out, retval] long *pLong);
};
[object, uuid("9E66A293-4365-11D2-A997-00C04FA37DDB")]
__interface ICustomDispatch : public IDispatch {
HRESULT Dispatch([in] long l, [out, retval] long *pLong);
};
[ coclass, default(ICustomDispatch), source(IDual), uuid("9E66A294-4365-11D2-A997-00C04FA37DDB")
]
class CClass : public ICustom, public IDual, public ICustomDispatch {
HRESULT Custom(long l, long *pLong) { return(S_OK); }
HRESULT Dual(long l, long *pLong) { return(S_OK); }
HRESULT Dispatch(long l, long *pLong) { return(S_OK); }
};
int main() {
#if 0 // Can't instantiate without implementations of IUnknown/IDispatch
CClass *pClass = new CClass;
long llong;
pClass->custom(1, &llong);
pClass->dual(1, &llong);
pClass->dispinterface(1, &llong);
pClass->dispatch(1, &llong);
delete pClass;
#endif
return(0);
}
Исходный атрибут также содержит пример использованияdefault
.
Требования
Контекст атрибута | Значение |
---|---|
Относится к | class , элемент struct данных |
Повторяемый | No |
Обязательные атрибуты | coclass (при применении к class или struct ) |
Недопустимые атрибуты | нет |
Дополнительные сведения см. в разделе Контексты атрибутов.