今天写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);
然后看能不能编译通过,然后再加参数,然后。。
最后终于找到问题了,就是上面的用红色标出的地方,声明的地方是说我得传递一个引用进去。
但是我调用的地方时直接把 右值传进去了,右值是没有地址的, 所以不可能是应用。所以编译就找不到
你要调用哪个函数了,问题有点隐蔽。
阅读(514) | 评论(0) | 转发(0) |