【发布时间】:2011-12-23 07:44:37
【问题描述】:
在静态成员函数内部,我需要获取类型。
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__ 成为我所在的任何类声明。我很清楚我可以在 funcName 之后添加 className 但我希望在实际使用它时尽可能简单。我的 RPC 管理器调用 rpc_foo 并将指针传递给我声明它的类的对象。基本上我需要知道如何确定该 void* 参数的实际类。
【问题讨论】: