В данном примере для каждого входного типа будет
сгенерирован уникальный глобальный указатель типа FARPROC, фактически
являющийся ячейкой глобальной в терминах единиц трансляций таблицы функций.
Для того, чтобы определить интерфейс ячейки таблицы
функций, выясним, от чего зависит импортируемая функция. Очевидно, это имя
функции, модуль, из которого надо ее импортировать, и прокси, используемый для
определения адреса функции в загружаемой библиотеке. В связи с этим определим
класс CDynFunction, инкапсулирующий ячейку для хранения адреса функции в
глобальной таблице импортируемых функций:
template
<class Module, class Name, class Proxy>
class CDynFunction
Учитывая все вышесказанное, реализация класса
тривиальна и будет выглядеть так: