接口描述中接口方法的预定义参数列表
list of predef-ed params for an interface method inside the interface description
情况:我正在编写一个看起来像 COM 接口
MIDL_INTERFACE(/*....*/)
IFace : IUnknown
{
STDMETHOD_(void, Foo)(int param) PURE;
};
该接口应该只在我的项目中使用,在几个编译单元中使用,不应该放在 idl 文件中。int param
应该以逻辑"OR"
的方式使用
IFace* p;
p->Foo( param1 | param2 | param3 );
参数值列表是静态预定义的,不应在程序执行期间修改。
问题是:如何定义参数列表?IFace
接口描述应该放在已经包含多接口描述(硬遗留)的文件中,这个文件包含在整个项目的许多地方。所以,我想在接口类本身中定义参数列表。
IFace : IUnknown
{
/*somehow define list of param for Foo here*/
STDMETHOD_(void, Foo)(int param) PURE;
};
并以一种Foo( IFace::param1 | IFace::param2 );
的方式使用它.我想将参数列表作为static const
变量,但我不喜欢将变量放在接口类中的想法。我不能用枚举来做,因为我需要用逻辑OR来做。
除了完全重组包含文件之外,对这种情况有什么好的建议吗?
您可以使用枚举:
IFace : IUnknown
{
enum { Param1 = 0x1, Param2 = 0x2, Param3 = 0x4, Param4 = 0x8 ... etc.
STDMETHOD_(void, Foo)(int param) PURE;
};
// usage
Foo( IFace::Param1 | IFace::Param2 );
您可以添加参数的组合:
enum { Param1 = 0x1, Param2 = 0x2, Param1_and_2 = Param1 | Param2, ... etc.
//usage
Foo( IFace::Param1_and_2 );
相关文章:
- 类具有相同的接口,但参数的类型不同
- INET无线接口表模块参数
- C++接口继承不同的参数方法
- 从常量字符*、字符*参数到标准::字符串的直接转换接口
- 使用模板参数化映射旧版 C 接口的接口中的类型
- 如何在 Iaccessible 接口的 accLoacation() 方法中启动参数?
- C++创建具有可变参数模板方法的接口
- 使用类模板参数推导来创建一个静态接口
- C++接口队列或priority_queue作为类的模板参数
- 从 C# 如何调用需要 *VARIANT 参数的非托管 OLE 接口
- 接口描述中接口方法的预定义参数列表
- 如何要求接口中参数的线程安全
- 强制接收实现接口的超类指针作为方法的参数
- 在接口上引用作为参数
- C++对象作为接口方法的参数
- 将泛型结构作为接口中的参数传递
- 使用 ATL 编译 dll,并将方法参数作为接口,但将它们作为 coclass 获取
- 如何在C++中编写类java参数级接口实现
- C++ 以指针作为参数的函数,并使用 swig 接口处理它
- C++:像在 Java 中一样将接口作为参数传递