初学问题100分,接口属性内部调用

ohahu 2004-07-08 03:20:50
我在同一个COM中,调用另外一个接口
比如有接口 IA,IB
IB实现类中的一个函数实现
xxx(IA *pA) //能这样用吗
{
//IA指针进来以后需不需要转成实现类的形式,如CA类
pA->functionA();//这样编译不会出错,运行会出错吗
pA->propertyA=10;//这样编译出错,说是propertyA不是IA的成员,其实是
//是不是一定要把属性也写成函数的形式才能调用
}
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohahu 2004-07-15
  • 打赏
  • 举报
回复
谢谢
windfighter 2004-07-12
  • 打赏
  • 举报
回复
不错,顶~
luohualiushui 2004-07-08
  • 打赏
  • 举报
回复
xxx(IA *pA) //能这样用吗--能不能这么用要看你下面想干什么
{
//IA指针进来以后需不需要转成实现类的形式,如CA类--不该转,如果你知道传进来的是CA类,你还用接口指针做参数干什么
pA->functionA();//这样编译不会出错,运行会出错吗--会不会出错要看接口怎么实现(implement)
pA->propertyA=10;//这样编译出错,说是propertyA不是IA的成员,其实是
//是不是一定要把属性也写成函数的形式才能调用-----给接口加个property吧,会自动生成两个函数,一个get,一个set,在vc中必须显式调用这些函数,在vb或asp中就可以想field一样操作了
}
wangweixing2000 2004-07-08
  • 打赏
  • 举报
回复
在vc中属性必须向函数一样调用,
xxx(IA *pA) //能这样用吗 -- 可以
{
//IA指针进来以后需不需要转成实现类的形式,如CA类 --是的,因为你到用的是实现类的成员函数eg:
CComObject<CA> *AObj = NULL;
AObj = static_cast<CA*>pA;
pA->functionA();//这样编译不会出错,运行会出错吗 ---肯定出错改成:AObj->functionA();
pA->propertyA=10;//这样编译出错,说是propertyA不是IA的成员,其实是
//是不是一定要把属性也写成函数的形式才能调用 --出错
//改成pA->propertyA(10);
}

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧