Я хотел бы создать макросы, которые определяют класс с методами во время компиляции. Эти методы являются прокси-методами для класса, который выполняется в другом процессе. Макросы определяют методы и прототипы соответствующих методов в том виде, в котором они находятся в удаленном процессе.
Содержимое тел методов (генерируемых макросами) действует как оболочки для шаблонных классов и методов, которые вызывают операции уровня структуры, необходимые для сериализации параметров и отправки полученных данных удаленному процессу для выполнения.
Если я смогу перехватить переменные параметров с помощью компилятора или препроцессора и передать их базовым методам инфраструктуры, это облегчит его использование для тех, кто его использует.
Я провел большое количество исследований способов инкапсуляции параметров. Кортежи и пакеты параметров были очень полезны, и я широко их использую на серверной стороне этой платформы, но, похоже, сейчас я пытаюсь использовать эти концепции несколько наоборот.
например. Вместо того, чтобы сделать существующие классы и методы (и их реализации) доступными, чтобы я мог вызывать их извне процесса, мне нужно генерировать методы, которые становятся обертками для существующих методов во время компиляции.
Например, я хотел бы создать что-то вроде этого (и это упрощение).
class MyClass
{
MyClass() { Create<MyClass>() }
MyClass(int i) { Create<MyClass>( i ) }
int MyMethod( int j ) { return Invoke< int (MyClass::*)( int j) >( j ); }
int MyMethod( int j, float f ) { return Invoke <int (MyClass::*)( int j, float f)( j, f ); }
};
Мне удалось позаботиться о указателе метода / функции, удержании типов параметров и т. П., Но в этом аспекте - автоматический захват данных из вызова метода (имен переменных) и размещение их в качестве параметров для метод / функция, которую обертывает метод, интересно, возможно ли это.
Я подумал о аргументах шаблона переменной, однако я не могу быть точным с перегруженными методами (с точки зрения определения допустимых аргументов для указанного метода).
Моя первая мысль о том, что это невозможно, но я все еще относительно новичок в C ++ 17 (от C ++ 2003), так что, возможно, есть что-то, что позволило бы захватывать фактические переменные параметра в стороне функции в целом?
Спасибо,
Kevin