急======》COM接口中,其接口函数是否可重载
我想实现的借口函数是这个样子
fun(BSTR bstrName,BSTR *pValue);
fun(short nIndex,BSTR * pValue);
创建时提示fun已经存在,不可以创建,怎么办,难道非要换个名字么?
问题点数:50、回复次数:6Top
1 楼orbit(走了走了)回复于 2005-06-01 14:26:22 得分 10
fun2(short nIndex,BSTR * pValue);
Top
2 楼krh2001(边城浪子)回复于 2005-06-01 14:28:06 得分 30
不可重载,但可实现伪重载. 因为你可以使用VARIANT 类型的变量,这样的变量可以传入 各种类型的值,然后你只要在函数的实现里判断一下数据类型然后选择不同的处理方式就行了
HRESULT CMyClass::fun(VARIANT Index,BSTR * pValue)
{
if(Index->vt == VT_BSTR)
{
// 这样处理.
.....
return S_OK;
}
else if(Index->vt==VT_I2)
{
// 那样处理
...
return S_OK;
}
else
return E_INVALIDARG; // 无效的参数
}
Top
3 楼weirdy(远古传说)回复于 2005-06-01 15:14:10 得分 0
必须.c++的重载也是通过换名实现的.Top
4 楼user32( )回复于 2005-06-02 10:04:46 得分 0
名字修饰不同的编译器有不同的实现,而COM的出发点之一就是要消除这种问题,所以COM的接口定义里面不允许同名Top
5 楼wangweixing2000(星(inspiration(灵感)))回复于 2005-06-02 11:03:26 得分 10
接口中是不可以的!Top
6 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-02 11:21:15 得分 0
所以,这个是无奈的问题Top




