uint8_t и ошибка связывания без знака - PullRequest
5 голосов
/ 01 января 2011

Я использую функцию шаблона:

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 перегрузку на unsigned char перегрузку?

Редактировать: Только сейчас заметил, что компоновщик жалуется на uint64_t и int64_t тоже.

Я компилирую в Windows, используя MSVC ++ 2008 Express .

Редактировать: Извинения, я объявлен my_object :: func (значение uint8_t) функция (и другие), но я не определил это. 1039 *

Ответы [ 2 ]

8 голосов
/ 01 января 2011

Этот файл include должен #include использовать вышеуказанные типы (рекомендации C99)

# include

0 голосов
/ 01 января 2011

Я предполагаю, что uint8_t было typedef отредактировано как unsigned char, поэтому вы и видите это.

...