Внутри статической функции-члена мне нужно получить тип.
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, но не могу найти макросы для получения текущего класса. Это не обязательно должно быть программно - это может быть макрос.
ура!
EDIT:
Вот актуальная функция макроса:
#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 *.