Внутри статической функции-члена мне нужно получить тип.
class MyClass
{
public:
static void myStaticFunc();
...
};
И затем в реализации, которую я хочу иметь:
void MyClass::myStaticFunc()
{
// Get MyClass as a type so I can cast using it
(get_type_from_static_function()*)someOtherVariable;
}
Возможно ли это вообще? Обычно я бы использовал что-то из typeinfo для объекта, но у меня нет this для работы.
Я не хочу просто использовать (MyClass *)
, потому что это происходит внутри макроса, и я хотел бы сделать его как можно более простым, чтобы его можно было вызывать без имени класса. .
Если это поможет, я использую QT, но не могу найти никаких макросов для получения текущего класса. Он не обязательно должен быть программным - это может быть макрос.
Ура!
РЕДАКТИРОВАТЬ: Вот фактическая функция макроса:
#define RPC_FUNCTION(funcName) \
static void rpc_##funcName(void* oOwner, RpcManager::RpcParamsContainer params){ ((__class__*)oOwner)->funcName(params); }; \
void funcName(RpcManager::RpcParamsContainer params);
Затем я вызываю RPC_FUNCTION (foo)
в объявлении класса. Я хочу, чтобы __ class __
было объявлением любого класса, в котором я нахожусь. Я хорошо знаю, что могу просто добавить className после funcName, но я хочу, чтобы это было как можно проще, когда я действительно использую его. Мой RPC-менеджер вызывает rpc_foo
и передает указатель на объект класса, в котором я его объявил. По сути, мне нужно знать, как определить фактический класс этого параметра void *.