Я пытаюсь назвать свою шаблонную функцию без успеха :(
Мой 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)'
Ответ: Шаблоны должны быть определены в заголовках.. (@Shaggi)
Шаблон функции
template <typename WRITABLE>
int WriteMemoryAddress(const char* process, unsigned long address, WRITABLE value);
не определен. Включите его определение в файл заголовка (memaddr.h):
template <typename WRITABLE>
int WriteMemoryAddress(const char* process, unsigned long address, WRITABLE value)
{
/* do something */
}
Шаблон функции будет создан один раз, когда вы его используете.