Есть ли способ захватить имена параметров прототипа метода внутри указанного метода или функции? - PullRequest
0 голосов
/ 08 июня 2019

Я хотел бы создать макросы, которые определяют класс с методами во время компиляции. Эти методы являются прокси-методами для класса, который выполняется в другом процессе. Макросы определяют методы и прототипы соответствующих методов в том виде, в котором они находятся в удаленном процессе.

Содержимое тел методов (генерируемых макросами) действует как оболочки для шаблонных классов и методов, которые вызывают операции уровня структуры, необходимые для сериализации параметров и отправки полученных данных удаленному процессу для выполнения.

Если я смогу перехватить переменные параметров с помощью компилятора или препроцессора и передать их базовым методам инфраструктуры, это облегчит его использование для тех, кто его использует.

Я провел большое количество исследований способов инкапсуляции параметров. Кортежи и пакеты параметров были очень полезны, и я широко их использую на серверной стороне этой платформы, но, похоже, сейчас я пытаюсь использовать эти концепции несколько наоборот.

например. Вместо того, чтобы сделать существующие классы и методы (и их реализации) доступными, чтобы я мог вызывать их извне процесса, мне нужно генерировать методы, которые становятся обертками для существующих методов во время компиляции.

Например, я хотел бы создать что-то вроде этого (и это упрощение).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...