Я пытаюсь вызвать мою шаблонную функцию без успеха :(++ ошибки определения функции C (передача параметров)
Моего memaddr.h:
#ifndef __MEM_ADDR_WRITER__
#define __MEM_ADDR_WRITER__
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
namespace MemAddr {
template <typename WRITABLE>
int WriteMemoryAddress(const char* process, unsigned long address, WRITABLE value);
}
#endif
Вызов:
byte value = 0xEB;
MemAddr::WriteMemoryAddress("jamp.exe", 0x004392D2, value);
Сообщение об ошибке:
undefined reference to `int MemAddr::WriteMemoryAddress<unsigned char>(char const*, unsigned long, unsigned char)`
A ответ: Шаблоны должны быть определены в заголовке .. (@Shaggi)
Поместите определение в файл заголовка (для этого нужны шаблоны) – Shaggi
Вы используете [зарезервированный идентификатор] (http://stackoverflow.com/questions/228783/what-are-the-rules-about-using- ан-подчеркивание-в-ас-идентификатор). – chris
Спасибо @Shaggi, это был правильный ответ. Но это действительно глупо. Моя функция нуждается в другой функции из файла заголовка (который не использует шаблон), но мне нужно было определить это тоже в заголовке. Поэтому, если я использую шаблоны, я должен забыть заголовки почти. – Iburidu