Chinaunix首页 | 论坛 | 博客
  • 博客访问: 433186
  • 博文数量: 138
  • 博客积分: 4114
  • 博客等级: 上校
  • 技术积分: 1341
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-14 20:41
文章分类

全部博文(138)

文章存档

2014年(1)

2013年(2)

2012年(78)

2011年(13)

2010年(34)

2009年(10)

我的朋友

分类: LINUX

2010-05-06 13:17:55

今天写ut的时候写了一个模板,但是调用的时候就是编译通不过,gcc报的错是找不到这个函数,郁闷之极

头文件是这样定义的

class A_c
{
   ..
   // enum ItemType_t
   // {
   //    ...
   //    ITEM_PLANT,
   // };
   public:

   template
   void testCase(const T & thisType, ItemType_t & item_type, zuint32);
   ...
};

template
void A_c::testCase(const T & thisType, ItemType_t & item_type, zuint32 userId)
{
   ....
}

调用的文件是 另一个,就当做main.cpp吧

int main()
{
    B_c  thisB;
    zuint32  userId = 110;
    A_c  thisA;
    thisA.testCase(thisB, ITEM_PLANT, userId);
    l
}


结果是编译器死活找不到要调用哪个函数。

结果找了半天,无解,只好求助于总监了,他刚开始也没有找出问题出现在哪, 就从最简单的开始
吧模板改成
template
void testCase(T & thisType);

然后看能不能编译通过,然后再加参数,然后。。
最后终于找到问题了,就是上面的用红色标出的地方,声明的地方是说我得传递一个引用进去。
但是我调用的地方时直接把 右值传进去了,右值是没有地址的, 所以不可能是应用。所以编译就找不到
你要调用哪个函数了,问题有点隐蔽。


阅读(481) | 评论(0) | 转发(0) |
0

上一篇:makefile点滴积累

下一篇:sql insert into

给主人留下些什么吧!~~