在ATL中怎么不能用模板类作为参数?
2008-12-09 08:49
169 查看
ATL里函数为什么不能用模板类做参数?
比如这个形式就不行:
void SketchProfile(CComPtr<IFeature> &pFeat,CString&strPrt,CFile&prtFile);
因为有时候IFeature*和CComPtr<IFeature>在一定程度上可以等价,所以我将上面的改成下面的形式:
void SketchProfileIFeature* &pFeat,CString&strPrt,CFile&prtFile);
居然能够定义成功,我确实喜了一把,结果千辛万苦把代码放到这个函数,在别的函数里调用这个函数的时候,
调用如下:
void SketchProfile(pFeat,strPrt,prtFile);这里的pFeat类型是CComPtr<IFeature>
编译就出现了这么个大错误:error C2664: 'SketchProfile' : cannot convert parameter 1 from 'class ATL::CComPtr<struct IFeature>' to 'struct IFeature *& '
为什么呢,请高手指点
(2008年12月16日9:19:07)
补充:虽说上面的不可以,但是我如果仅仅让其在我的单个文件里建立函数,void SketchProfile(CComPtr<IFeature> &pFeat,CString&strPrt,CFile&prtFile);既不是接口函数,又不是成员函数,就可以,并且调用都是成功的,这个太奇怪了,哪位告诉能否解释下
比如这个形式就不行:
void SketchProfile(CComPtr<IFeature> &pFeat,CString&strPrt,CFile&prtFile);
因为有时候IFeature*和CComPtr<IFeature>在一定程度上可以等价,所以我将上面的改成下面的形式:
void SketchProfileIFeature* &pFeat,CString&strPrt,CFile&prtFile);
居然能够定义成功,我确实喜了一把,结果千辛万苦把代码放到这个函数,在别的函数里调用这个函数的时候,
调用如下:
void SketchProfile(pFeat,strPrt,prtFile);这里的pFeat类型是CComPtr<IFeature>
编译就出现了这么个大错误:error C2664: 'SketchProfile' : cannot convert parameter 1 from 'class ATL::CComPtr<struct IFeature>' to 'struct IFeature *& '
为什么呢,请高手指点
(2008年12月16日9:19:07)
补充:虽说上面的不可以,但是我如果仅仅让其在我的单个文件里建立函数,void SketchProfile(CComPtr<IFeature> &pFeat,CString&strPrt,CFile&prtFile);既不是接口函数,又不是成员函数,就可以,并且调用都是成功的,这个太奇怪了,哪位告诉能否解释下
相关文章推荐
- 在模板类中使用字符串作为无类型模板参数
- 如何将一个模板类A作为模板类B的模板参数
- ViewState的状态值在url参数变化时,不能保存值,怎么解决
- Python陷阱:为什么不能用可变对象作为函数的默认参数值
- JQuery发送ajax请求不能用数组作为参数
- ADO.NET中不能把0作为值传给SQL参数?
- error:对于字符,不能作为strcpy、strcat函数的参数
- i++和++i是怎么用的?它们作为函数参数时的使用举例
- 控件怎么作为参数
- C++多维数组作为函数参数该怎么写?
- 数组大小不能在函数内计算,而是应该作为参数传进来
- 数组作为函数的参数时,不能通过sizeof运算符得到该数组的大小
- 以指针作为函数参数,不能改变实参指针变量的值从而改变实参值
- c++中临时变量不能作为非const的引用参数的方法
- 带参数的宏定义应该怎么写,参数不能加括号
- c++构造函数不能使用本class对象作为参数
- delphi中类的属性不能作为可变参数传递给方法
- CPen 对象不能作为函数的参数
- C#中怎么将XML作为参数post到接口
- [转]c++中临时变量不能作为非const的引用参数