uint8_t 和 unsigned char 链接错误
我正在使用模板函数:
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) 函数(和其他),但我没有定义它。
I'm using template function:
template<typename T> void func(const T& value)
{
obj->func(value);
}
where obj is object of class:
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) { ... }
The problem is with uint8_t overload of my_object::func() override. Linker complains about unresolved external symbols to overloads, which should have unsigned char parameter.
Should I replace uint8_t overload with unsigned char overload?
Edit: Just now noticed, that linker complains about uint64_t and int64_t too.
I compile on Windows using MSVC++ 2008 Express.
Edit: Apologies, I declared my_object::func(uint8_t value) function (and other), but I didn't defined it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是
include
文件应该 #include 以使用上述类型(C99 建议)#include
This is the
include
file should #include to use the above mentioned types (C99 recommendations)#include <stdint.h>
我猜测
uint8_t
已被typedef
编辑为unsigned char
,因此您会看到这一点。I'm guessing that
uint8_t
has beentypedef
ed asunsigned char
, hence why you're seeing that.尝试编译并
修复我的类似问题
Try compiling with
fixed my problem with a similar issues