相关疑难解决方法(0)

C++中是否有__CLASS__宏?

__CLASS__C++中是否有一个宏,它给出类似于__FUNCTION__宏的类名,它给出了函数名

c++ macros

89
推荐指数
7
解决办法
8万
查看次数

如何从C++对象获取类名?

是否有可能获得对象名称?

#include<cstdio>

class one {
public:
    int no_of_students;
    one() { no_of_students = 0; }
    void new_admission() { no_of_students++; }
};

int main() {
    one A;
    for(int i = 0; i < 99; i++) {
        A.new_admission();
    }
    cout<<"class"<<[classname]<<" "<<[objectname]<<"has "
        <<A.no_of_students<<" students";
}
Run Code Online (Sandbox Code Playgroud)

在哪里我可以取名字,像

[classname] = A.classname() = one
[objectname] = A.objectname() = A
Run Code Online (Sandbox Code Playgroud)

C++是否提供了实现此目的的任何机制?

c++ class

50
推荐指数
6
解决办法
14万
查看次数

C++在静态函数中获取类类型

在静态成员函数内部,我需要获取类型.

class MyClass
{
     public:
         static void myStaticFunc();
     ...
};
Run Code Online (Sandbox Code Playgroud)

然后在我想要的实现中:

void MyClass::myStaticFunc()
{
     // Get MyClass as a type so I can cast using it
     (get_type_from_static_function()*)someOtherVariable;
}
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?通常情况下,我会在一个对象上使用来自typeinfo的东西,但我没有这个可以使用.

我不想只是使用(MyClass*)因为这是在宏内部,我想尽可能简单,以便可以在没有类名的情况下调用它.

如果它有助于我使用QT但我找不到任何宏来获得当前的类.它不一定需要是程序化的 - 它可以是一个宏.

干杯!

编辑:这是实际的宏功能:

#define RPC_FUNCTION(funcName) \
static void rpc_##funcName(void* oOwner, RpcManager::RpcParamsContainer params){ ((__class__*)oOwner)->funcName(params); }; \
void funcName(RpcManager::RpcParamsContainer params);
Run Code Online (Sandbox Code Playgroud)

然后我RPC_FUNCTION(foo)在一个类声明中调用.我想__class__成为我所处的任何类声明.我很清楚我可以在funcName之后添加className但我想在实际使用它时尽可能简单.我的RPC管理器调用rpc_foo并传递指向我声明它的类的对象的指针.基本上我需要知道如何确定该void*参数的实际类.

c++ static types class

6
推荐指数
1
解决办法
3220
查看次数

C++ - 有没有办法获得具有不变语法的当前类类型?

我想编写一个宏,当在类中扩展时,使用该类类型(特别是作为模板参数).在类方法中,我可以使用这个:

#define METHOD_MACRO int sample_method(void)const {\
    return template_struct<this_type<decltype(this)>::type>::index;}
Run Code Online (Sandbox Code Playgroud)

(this_type是我的结构,在这里相当于remove_pointer<remove_const<T>>)

但是当我需要方法之外的类类型(对于类成员指针的typedef)时,this关键字不可用; 我试图用auto一些技巧来推断类型,但这里没有运气.有问题的类是从我的班级继承的,如果这可以有任何帮助.我想避免使用我的宏必须写强制性的任何人typdedef.

有任何想法吗?

c++ templates c++11

6
推荐指数
1
解决办法
3822
查看次数

标签 统计

c++ ×4

class ×2

c++11 ×1

macros ×1

static ×1

templates ×1

types ×1