uint8_t和unsigned char链接错误

时间:2011-01-01 15:29:25

标签: c++ function char overloading unsigned

我正在使用模板功能:

template<typename T> void func(const T& value)
{
    obj->func(value);
}

其中obj是类的对象:

void my_object::func(int64_t value) { ... }
void my_object::func(uint64_t value) { ... }
void my_object::func(uint32_t value) { ... }
void my_object::func(uint16_t value) { ... }
void my_object::func(uint8_t value) { ... }

问题出在 my_object :: func()覆盖的 uint8_t 重载。链接器抱怨未解决的重载外部符号,应该 unsigned char 参数。

我应该用 unsigned char 重载替换 uint8_t 重载吗?

编辑:刚才注意到,该链接器也抱怨 uint64_t int64_t

我使用 MSVC ++ 2008 Express 在Windows上编译。

编辑:道歉,我宣布 my_object :: func(uint8_t value)函数(和其他),但我没有定义

3 个答案:

答案 0 :(得分:8)

include文件应该#include使用上述类型(C99推荐)

#include&lt; stdint.h&gt;

答案 1 :(得分:0)

我猜测uint8_t typedef已被unsigned char编辑为{{1}},因此您会看到这一点。

答案 2 :(得分:0)

尝试使用

进行编译
template void my_object::func(int64_t value) { ... }
template void my_object::func(uint64_t value) { ... }
template void my_object::func(uint32_t value) { ... }
template void my_object::func(uint16_t value) { ... }
template void my_object::func(uint8_t value) { ... }

通过类似的问题解决了我的问题