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.
This is the include
file should #include to use the above mentioned types (C99 recommendations)
#include <stdint.h>
我猜uint8_t
已被typedef
为unsigned char
,因此您会看到它。
Try compiling with
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) { ... }
fixed my problem with a similar issues
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.