簡體   English   中英

uint8_t 和無符號字符鏈接錯誤

[英]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_tint64_t

我使用MSVC++ 2008 Express在 Windows 上編譯。

編輯:抱歉,我聲明了my_object::func(uint8_t value)函數(和其他),但我沒有定義它。

這是include文件應該#include 使用上述類型(C99 建議)

#include <stdint.h>

我猜uint8_t已被typedefunsigned 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM