我在同一个COM中,调用另外一个接口
比如有接口 IA,IB
IB实现类中的一个函数实现
xxx(IA *pA) //能这样用吗
{
//IA指针进来以后需不需要转成实现类的形式,如CA类
pA->functionA();//这样编译不会出错,运行会出错吗
pA->propertyA=10;//这样编译出错,说是propertyA不是IA的成员,其实是
//是不是一定要把属性也写成函数的形式才能调用
}
比如有接口 IA,IB
IB实现类中的一个函数实现
xxx(IA *pA) //能这样用吗
{
//IA指针进来以后需不需要转成实现类的形式,如CA类
pA->functionA();//这样编译不会出错,运行会出错吗
pA->propertyA=10;//这样编译出错,说是propertyA不是IA的成员,其实是
//是不是一定要把属性也写成函数的形式才能调用
}
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);
}
{
//IA指针进来以后需不需要转成实现类的形式,如CA类--不该转,如果你知道传进来的是CA类,你还用接口指针做参数干什么
pA->functionA();//这样编译不会出错,运行会出错吗--会不会出错要看接口怎么实现(implement)
pA->propertyA=10;//这样编译出错,说是propertyA不是IA的成员,其实是
//是不是一定要把属性也写成函数的形式才能调用-----给接口加个property吧,会自动生成两个函数,一个get,一个set,在vc中必须显式调用这些函数,在vb或asp中就可以想field一样操作了
}