[英]uint8_t and unsigned char linking error
我正在使用模板功能:
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) { ... }
問題在於uint8_t重載my_object::func()覆蓋。 鏈接器抱怨未解析的外部符號重載,應該有unsigned char參數。
我應該用無符號字符重載替換uint8_t重載嗎?
編輯:剛剛注意到,該鏈接器也抱怨uint64_t和int64_t 。
我使用MSVC++ 2008 Express在 Windows 上編譯。
編輯:抱歉,我聲明了my_object::func(uint8_t value)函數(和其他),但我沒有定義它。
這是include
文件應該#include 使用上述類型(C99 建議)
#include <stdint.h>
我猜uint8_t
已被typedef
為unsigned char
,因此您會看到它。
嘗試編譯
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) { ... }
用類似的問題解決了我的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.