描述:
最近在做一个表达式分析的Com,接口使用ATL方式。
主要接口有:
IParam 参数信息接口 coclass:CParam
IParamCollection 参数集合接口(用ICollectionOnSTLImpl实现) coclass:CParamCollection
IExpression 表达式处理接口 coclass:CExpresstion
现在要想在CExpression类中嵌入一IParamCollection接口变量,在CExpression类中进行IParamCollection接口实现类实例化,并且可以通过IExpression 接口的Params属性得到参数集合的接口指针,同时在CExpression类内部要用到CParamCollection中list< CAdapt< CComPtr<IParam> > >的指针。
我在CExpression类中定义CComPtr<IParamCollection > m_ptrParams,
如下初始化
//FinalConstruct
HRESULT CExpression::FinalConstruct ()
{
HRESULT hRes = CoCreateInstance(CLSID_ParamCollection, NULL, CLSCTX_ALL, IID_IParamCollection, (void**)&m_ptrParams);
return hRes;
}
但在使用时m_ptrParams-> 不能操作任何成员,不知道应该怎么处理了……
再有接口的实现类如何构造才能在别的语言像VB中调用
可以实现这样的初始化 Set p =new ExpLib.Param ("Goods",0.3)
由于小弟刚刚接触ATL对很多东西不了解,还请大家多帮忙,谢谢
解决方案1:
但在使用时m_ptrParams-> 不能操作任何成员,不知道应该怎么处理了……
get_xx set_xx
com 一般是提供各接口方法来完成初始化
非要实现,可以用com的名字对象技术