免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4738 | 回复: 2
打印 上一主题 下一主题

could not deduce template argument for 'T' [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-14 11:23 |只看该作者 |倒序浏览
DLL中

  1. template <class T>
  2. PVRMODULE_API extern T Initial_Acquire(const char* name);
  3. 另一个文件的实现:
  4. template < class T>
  5. T Initial_Acquire()
  6. {
  7.         SDKmpl* pSDKImpl = new SDKImpl();  //这里的SDKImpl继承了T
  8.         return pSDKImpl;
  9. }
复制代码

EXE中

  1. static IPVRGUIEPG* s_IPVRGUIEPG = NULL;

  2. int main(int argc, char* argv[])
  3. {
  4.   ...
  5.   s_IPVRGUIEPG = Initial_Acquire("GUI2SQLITE3");
  6.   ...
  7. }
复制代码

编译出错:

  1. error C2783: 'T __cdecl Initial_Acquire(const char *)' : could not deduce template argument for 'T'
复制代码

论坛徽章:
0
2 [报告]
发表于 2006-09-14 11:54 |只看该作者

  1. template <class T>
  2. PVRMODULE_API extern T Initial_Acquire(const char* name);

  3. template < class T>
  4. T Initial_Acquire()
  5. {
  6.         SDKmpl* pSDKImpl = new SDKImpl();  //这里的SDKImpl继承了T
  7.         return pSDKImpl;
  8. }
复制代码

C++是一种强类型语言,你的函数的声明和定义严格匹配吗?


目前支持export关键字的可能只有Comeau c++编译器。你的编译器能够支持在DLL中导出模版吗?


  1. s_IPVRGUIEPG = Initial_Acquire("GUI2SQLITE3");
复制代码

编译器无从推导出T被IPVRGUIEPG*取代,必须显示指出模版参数的类型。

  1. s_IPVRGUIEPG = Initial_Acquire<IPVRGUIEPG*>("GUI2SQLITE3");
复制代码


看了你这段时间问得问题,觉得你目前不应当写代码,而是应当去看书。C++中的某些特性虽好,但是在你没有真正理解它之前,还是不要用了。

找一些有针对性的小例子,实践一下,逐个知识点的搞清楚。

[ 本帖最后由 coldwarm 于 2006-9-14 12:03 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-09-14 13:09 |只看该作者
因笔误, 鄙人深表歉意, 望各位多多包涵.

  1. template <class T>
  2. PVRMODULE_API extern T Initial_Acquire();  //笔误

  3. template < class T>
  4. T Initial_Acquire()
  5. {
  6.         SDKmpl* pSDKImpl = new SDKImpl();  //这里的SDKImpl继承了T
  7.         return pSDKImpl;
  8. }
  9. s_IPVRGUIEPG = Initial_Acquire();  //笔误
复制代码

多谢"冷热"如此忠言, 但是至于些代码能否 ,鄙人还是自知之明的.(对C++的掌握程度,鄙人还有些自信, 因某些使用方法常未用之, 所以一时无法想起, 故网上求之, 但鄙人认为"冷热"兄,有些言过其实. )
罢了, 此乃一时过之, 若鄙人之言有冒犯之意, 望谅之
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP